php FTP登录检查


php FTP login check

我为一家工程公司管理了一些ftp服务器。其中一些ftp服务器通过php接口设置为数据备份服务器。我每天进行两次维护,从而停止ftp上的ftp守护进程(proftpd(我正在对服务器进行维护。

然而,php应用程序的工作要求之一是登录到每个ftp服务器,下载一个统计文件(邮寄给CEO(。目前,如果在任何ftp服务器上停止了proftpd,并且php应用程序正在运行,则php在尝试登录(停止的(ftp服务器时会挂起(通过浏览器(。

我已经将超时设置为90秒(默认值(到5秒,但相同事情发生了。

当php在停止的ftp服务器上登录时,我如何防止php挂起浏览器?

有指针吗?

谢谢

Danny

您可以使用fsockopen((进行预检查,并将其连接状态存储在会话中(这样就不会在每次重新加载时进行检查(。

<?php 
session_start();
if(!isset($_SESSION['ftp_connectable'])){
    $sock = @fsockopen('ftp.yourserver', 21, $errno, $errstr, 1);//< 1sec timeout
    if ($sock) {
        $_SESSION['ftp_connectable'] = true;
    }else{
        $_SESSION['ftp_connectable'] = false; 
    }
    @fclose($sock);
}
if($_SESSION['ftp_connectable'] === true){
    echo '<span style="color:red">FTP Server is connectable!</span>';
}else{
    echo '<span style="color:red">FTP Server is not connectable!</span>';
}

然后显示服务器基于$_SESSION['ftp_connectable']关闭的通知,您可以添加一个Try Again按钮来清除$_SESSION['ftp_connectable']变量,然后重试连接状态。