脚本宝典收集整理的这篇文章主要介绍了为什么我的PHP脚本间歇性地无法通过FTP上传文件?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
出于某种原因,脚本只会在某些时候上传文件,而我正在寻找调试/到达这个非常困难的底部.这是违规脚本的主要部分:
if ($ftp_conn = ftp_connect($ftp_server)) { if ($login = ftp_LOGin($ftp_conn,$ftp_user,$ftp_pass)) { $filename = time() . '-orders.xML'; ftp_pasv($ftp_conn,true); if (ftp_put($ftp_conn,$filename,$xmlPath,FTP_ASCII)) { $logString .= ' - Successfully run'; ftp_close($ftp_conn); } else { $logString .= ' - Failed to upload file'; $error = error_get_last(); $logString .= ' - ' . $error['message']; ftp_close($ftp_conn); } } else { $logString .= ' - Failed to log in to server'; ftp_close($ftp_conn); } } else { $logString .= ' - Failed to connect to server'; };
我将$logString变量保存到文本文件中.我实际看到的唯一错误是:
ftp_put(): TyPE set to A
我无法在网上找到任何关于这意味着什么或是否应该导致问题的内容.
"PASS (hidden)" 230 - "TYPE A" 200 -
有时候它有效,有时则不然.它失败时没有明显的模式.大型和小型XML文件都有效且失败.
显然,服务器可以处理3个同时连接,理论上应该只有2个,所以我不能看到这个问题.
我最好的猜测是我连接的1and1 FTP服务器存在问题,因为上面的脚本在其他服务器上没有问题.
我尝试将ftp_put模式切换到FTP_BINARY,但没有区别.
$uploaded = false; $tries = 0; $filename = time() . '-orders.xml'; while (!$uploaded && $tries <= 5) { $tries++; if ($ftp_conn = ftp_connect($ftp_server)) { if ($login = ftp_login($ftp_conn,$ftp_pass)) { $logString .= ' - Attempt ' . $tries; ftp_pasv($ftp_conn,true); ftp_set_option($ftp_conn,FTP_TIMEOUT_SEC,120); if (ftp_put($ftp_conn,FTP_BINARY)) { $logString .= ' - Successfully run'; $uploaded = true; ftp_close($ftp_conn); } else { $logString .= ' - Failed to upload file'; $error = error_get_last(); $logString .= ' - ' . $error['message']; ftp_close($ftp_conn); } } else { $logString .= ' - Failed to log in to server'; ftp_close($ftp_conn); } } else { $logString .= ' - Failed to connect to server'; }; };
以上是脚本宝典为你收集整理的为什么我的PHP脚本间歇性地无法通过FTP上传文件?全部内容,希望文章能够帮你解决为什么我的PHP脚本间歇性地无法通过FTP上传文件?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。