String to Zipped Stream in php
===

I have a processing server with my database and a serving database to serve up files with a low bandwidth cost. On the processing server, php is not able to create files so everything must be done with streams and/or stay in memory before being sent over to another server for download.  A few days ago I found out about the stream abstraction with 'php://memory' and that I can do something like

    $fp=fopen('php://memory','w+');
    fwrite($fp,"Hello world");
    fseek($fp,0,SEEK_SET);

    //make a ftp connection here with $conn_id
    $upload = ftp_fput($conn_id,"targetpath/helloworld.txt",$fp,FTP_BINARY);

to make the file in memory and then allow me to ftp it over to my other server.  This is exactly what I want, except I also want to zip the data before sending it -- preferably using only native parts of php like ziparchive and not additional custom classes for special stream manipulation. I know that I am very close with the following...

    $zip = new ZipArchive();
    if($zip->open('php://memory', ZIPARCHIVE::CREATE)) {
      $zip->addFromString('testtext.txt','Hello World!');
      $fp = $zip->getStream('test'); if(!$fp) print "no filepointer";

      //make a ftp connection here with $conn_id
      $upload = ftp_fput($conn_id,"targetpath/helloworld.zip",$fp,FTP_BINARY);
    } else print "couldn't open a zip like that";

The point at which this fails is the call to getStream (which always returns false although I think I am using correctly). It appears that the zip is fine making the file in 'php://memory' but for some reason getStream still fails although perhaps I don't sufficiently understand how ZipArchive makes zips...

How can I go from the string to the zipped filepointer so that I can ftp the zip over to my other server?  Remember I can't make any files or else I would just make the zip file then ftp it over. 