我的一个 CLI 脚本通过 FTP 下载文件。
该脚本打开一个 FTP 连接,登录,下载必要的文件,然后休眠。它会每隔一段时间再次检查文件。该脚本预计将作为守护进程连续运行数天。
我希望能够重新使用打开的连接(这样我就不必重新连接每个循环)。
$ftpconn = false;
$ftplogin = false;
while(1){
sleep(25);
if(!$ftpconn){
$ftpconn = ftp_connect(HOST);
}
if(!$ftplogin){
$ftplogin = ftp_login($ftpconn, USER, PASS);
}
// Do FTP stuff here
}
我的问题是这样的。 ftp_connect
和 ftp_login
都超时了吗?如果是这样,发生这种情况时 $ftpconn
和 $ftplogin
会变为 FALSE 吗?
谢谢。
最佳答案
您最好的选择是实现您的连接过程。然后构建您的逻辑以尝试检查该文件。 (我假设使用类似 ftp_nlist 的东西)。如果由于任何原因出现错误,ftp_nlist 将返回 FALSE。此时您可以让您的代码使用 ftp_close 关闭现有连接(如果连接出于任何原因已经关闭,它将给出 FALSE),然后再次运行连接序列。
如果 ftp_nlist 多次失败退出您的应用程序,您需要构建逻辑。不幸的是,各种 ftp_* 命令在确定函数失败的原因方面没有太多深度,因此您必须围绕它构建额外的逻辑来进行补偿。
关于PHP - 验证 FTP 连接 - 检测 FTP 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12294669/