是否有可能使用PHP脚本将文件上传到FTP服务器,而同一脚本正在从其他地方下载意向文件?所以在脚本下载时它应该实时上传文件。使用PHP通过FTP上传实时文件
1
A
回答
1
在理论上就像蛋糕一样简单。首先,请参阅FTP功能:http://www.php.net/manual/en/function.ftp-fput.php。然后我们使用FOPEN包装(http://www.php.net/manual/en/wrappers.php)打开我们想要读取的文件,并发送它。
要修改php.net例如:
<?php
// open some file for reading
$file = 'somefile.txt';
$fp = fopen('ftp://user:[email protected]/' . $file, 'r');
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// try to upload $file
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
echo "Successfully uploaded $file\n";
} else {
echo "There was a problem while uploading $file\n";
}
// close the connection and the file handler
ftp_close($conn_id);
fclose($fp);
?>
哦,你可能想有时非阻塞:http://www.php.net/manual/en/function.ftp-nb-fput.php
0
PHP可以处理ftp协议,这里是the php manual的一个例子。
PHP支持进程分叉,你可以检查pnctl。
0
PHP的内置FTP扩展可以upload和download文件以异步的方式。
但是听起来好像你正在讨论使用这种方法在两个不同的FTP连接之间传输文件,而不是首先下载整个文件。我不确定这些功能是否支持。事实上,我希望否则 - 在下载过程中上传可能会到达文件的末尾,并且简单地假设它已经达到最后并完成自己。
在上传手册链接上有一些建议,您可以欺骗一些服务器使用被动模式执行直接连接,但我会用一粒盐。
使用FTP stream wrappers可能会带来一些好运。您可以打开两个FTP包装文件作为文件句柄,然后使用fread
从一侧检索特定大小的块,并将fwrite
写入另一侧。请记住,您需要在循环中执行此操作,因此无法在后台完成,例如FTP扩展的方法。它也可能很慢。
相关问题
- 1. 使用PHP通过FTP上传文件
- 2. 使用PHP上传一个文件夹通过FTP使用PHP
- 3. 通过FTP在php上传文件
- 4. 通过ftp上传文件
- 5. 上传文本文件到谷歌上传通过PHP FTP PUT
- 6. 如何通过FTP使用PHP上传文件的URL?
- 7. 如何使用ftp连接通过PHP cURL上传文件?
- 8. 使用php,JS&ajax通过ftp上传文件
- 9. 使用PHP通过基于Web的ftp上传文件
- 10. 使用cmd通过ftp传输文件
- 11. 通过php使用ftp细节上传php文件正在执行php,而不是上传原始php文件
- 12. 使用php下载文件通过ftp
- 13. 使用php上传FTP文件
- 14. 通过FTP上传php文件,所有linebreaks和CRs上传时丢失
- 15. 上传文件到通过FTP
- 16. FTP上传文件通过SSL C#
- 17. Bash脚本通过FTP上传文件
- 18. 通过FTP上传文件片段
- 19. 如何通过FTP上传文件夹?
- 20. Java - 通过FTP上传文件夹?
- 21. CURL通过FTP上传空白文件
- 22. Compact Framework文件通过FTP上传
- 23. 无法使用FTP下载文件,通过PHP上传文件后
- 24. 使用PHP通过ajax上传文件
- 25. FTP多文件上传PHP
- 26. 使用ftp上传文件
- 27. 通过php上传文件时出错
- 28. 通过PHP上传文件
- 29. php通过ftp大量上传
- 30. 通过PHP上传FTP表格