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