是否有可能使用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. 使用php,JS&ajax通过ftp上传文件
- 5. 使用PHP通过基于Web的ftp上传文件
- 6. 如何通过FTP使用PHP上传文件的URL?
- 7. 通过PHP页面上传FTP上传
- 8. 通过php使用ftp细节上传php文件正在执行php,而不是上传原始php文件
- 9. 使用php上传FTP文件
- 10. 使用php下载文件通过ftp
- 11. 通过FTP上传php文件,所有linebreaks和CRs上传时丢失
- 12. 通过FTP上传文件片段
- 13. 上传文件到通过FTP
- 14. Java - 通过FTP上传文件夹?
- 15. 使用PHP通过ajax上传文件
- 16. FTP多文件上传PHP
- 17. 通过php上传文件时出错
- 18. 通过PHP FTP上传整个目录
- 19. FTP通过PHP上传和下载
- 20. 问题当文件不存在于FTP服务器上时,使用FtpWebRequest通过FTP上传文件
- 21. 上传的文件与PHP无法通过FTP更改
- 22. 如何通过FTP上传文件夹PHP
- 23. HTML/PHP/JS选择多个文件并通过FTP上传
- 24. 通过ftp上传eclipse生成的php文件的问题
- 25. 如何在PHP中通过ftp上传文件?
- 26. 无法使用FTP通过3G在iPhone 4上传输文件
- 27. 如何使用cURL通过FTP上传文件夹?
- 28. 通过使用Java的FTP上传资源文件
- 29. 上传文件通过FTP使用Java ME
- 30. FTP文件上传超时