我有一些ftp服务器,我为一家工程公司管理。其中一些ftp服务器通过php接口设置为数据备份服务器。 我每天做两次维护,因此我停止了ftp上的ftp守护进程(proftpd) 服务器我正在进行维护。
然而,php应用程序工作的一个要求是登录每个ftp服务器,下载统计文件(邮寄给CEO)。目前,如果proftpd在任何ftp服务器上停止,并且php应用程序正在运行,则在尝试登录(停止)ftp服务器时,php会挂起(通过浏览器)。
我已将超时设置为90(默认)秒至5秒,但相同 事情发生了。
当php在停止的ftp服务器上登录时,如何防止php挂起浏览器?
任何指针?
谢谢
丹尼
答案 0 :(得分:0)
您可以使用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']
显示服务器已关闭的通知您可以添加 再试一次 按钮,清除$_SESSION['ftp_connectable']
变量并尝试& #39;再次连接状态。