Hi, yesterday I did several commits to the FTP extension. Due to the fact that I do not know how I can document the stuff myself and right now am lacking the time here is a brief instruction:
Stefan Esser --------------------------------------------------------------------------- 5 new constants --------------- FTP_AUTOSEEK new option for get/set_option: when enabled (which is default) get/put requests with a resumepos/startpos will first seek to the wanted position within the stream FTP_AUTORESUME automaticly determine resumepos/startpos for get/put request (does only work if AUTOSEEK is enabled) FTP_FAILED asynchronous transfer has failed FTP_FINISHED asynchronous transfer has finished FTP_MOREDATA asynchronous transfer is still active New optional 5th parameter -------------------------- Added optional "startpos" to ftp_put/ftp_fput (works like in the async examples) Added optional "resumepos" to ftp_get/ftp_fget (works like in the async examples) New asynchronous FTP functions ------------------------------ int ftp_async_get(resource ftp_stream, string local_file, string remote_file, int mode[, int resumepos]) int ftp_async_fget(resource ftp_stream, resource fp, string remote_file, int mode[, int resumepos]) int ftp_async_put(resource ftp_stream, string remote_file, string local_file, int mode[, int startpos]) int ftp_async_fput(resource ftp_stream, string remote_file, resource fp, int mode[, int startpos]) int ftp_async_continue(resource ftp_stream) Example (Downloading a file): ----------------------------- ... // Initate the Download $ret = ftp_async_get ($my_connection, "test", "README", FTP_BINARY); while ($ret == FTP_MOREDATA) { // Do whatever you want echo "."; // Continue downloading... $ret = ftp_async_continue ($my_connection); } if ($ret != FTP_FINISHED) { echo "There was an error downloading the file..."; exit(1); } ... Example (Uploading a file): ----------------------------- ... // Initiate the Upload $ret = ftp_async_put ($my_connection, "test.remote", "test.local", FTP_BINARY); while ($ret == FTP_MOREDATA) { // Do whatever you want echo "."; // Continue uploading... $ret = ftp_async_continue ($my_connection); } if ($ret != FTP_FINISHED) { echo "There was an error uploading the file..."; exit(1); } ... Example (Resume downloading a file): ------------------------------------ ... // Initate $ret = ftp_async_get ($my_connection, "test", "README", FTP_BINARY, filesize("test")); // OR: $ret = ftp_async_get ($my_connection, "test", "README", // FTP_BINARY, FTP_AUTORESUME); while ($ret == FTP_MOREDATA) { // Do whatever you want echo "."; // Continue downloading... $ret = ftp_async_continue ($my_connection); } if ($ret != FTP_FINISHED) { echo "There was an error downloading the file..."; exit(1); } ... Example (Resume uploading a file): ---------------------------------- ... // Initiate $ret = ftp_async_put ($my_connection, "test.remote", "test.local", FTP_BINARY, ftp_size("test.remote")); // OR: $ret = ftp_async_put ($my_connection, "test.remote", "test.local", // FTP_BINARY, FTP_AUTORESUME); while ($ret == FTP_MOREDATA) { // Do whatever you want echo "."; // Continue uploading... $ret = ftp_async_continue ($my_connection); } if ($ret != FTP_FINISHED) { echo "There was an error uploading the file..."; exit(1); } ... Example (Resume downloading at position 100 to a new file): ----------------------------------------------------------- ... // Disable Autoseek ftp_set_option ($my_connection, FTP_AUTOSEEK, FALSE); // Initiate $ret = ftp_async_get ($my_connection, "newfile", "README", FTP_BINARY, 100); while ($ret == FTP_MOREDATA) { ... // Continue downloading... $ret = ftp_async_continue ($my_connection); } ... newfile is now 100 bytes smaller than README on the ftp because we started reading at offset 100. If we have not have disabled AUTOSEEK the first 100 bytes of newfile will be '\0'... -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php