[gollem] Fwd: [PHP-DEV] New FTP extension functionality
Chuck Hagenbuch
chuck@horde.org
Thu, 1 Aug 2002 16:07:33 -0400
----- Forwarded message from sesser@php.net -----
Date: Sat, 27 Jul 2002 08:52:46 +0200
From: Stefan Esser <sesser@php.net>
Reply-To: Stefan Esser <sesser@php.net>
Subject: [PHP-DEV] New FTP extension functionality
To: php-dev@lists.php.net
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
----- End forwarded message -----
-chuck
--
Charles Hagenbuch, <chuck@horde.org>
"After a few minutes the most aromatic and nice smelling Italian coffee
will come out of the exhaustpipe." - Our stove-top espresso pot