使用PHP&获取超时的FTP错误笨

时间:2012-05-16 07:22:49

标签: php codeigniter ftp

我正在尝试使用PHP和Codeigniter通过FTP发送文件。我实际上并没有使用Codeigniter FTP类,因为它没有做我需要的东西,所以对于它来说它是原生PHP。

基本上我需要的是脚本在发送文件超时时执行操作。目前我的代码是:

// connect to the ftp server
$connection = ftp_connect($item_server);

// login to the ftp account
$login = ftp_login($connection, $item_username, $item_password);

// if the connection or account login failed, change status to failed
if (!$connection || !$login) 
    { 
        // do the connection failed action here
    }
else
    {

// set the destination for the file to be uploaded to
$destination = "./".$item_directory.$item_filename;

// set the source file to be sent
$source = "./assets/photos/highres/".$item_filename;

// upload the file to the ftp server
$upload = ftp_put($connection, $destination, $source, FTP_BINARY);

// if the upload failed, change the status to failed
if (!$upload) 
    {
        // do the file upload failed action here
    }
// fi the upload succeeded, change the status to sent and close the ftp connection
else 
{
    ftp_close($connection);
    // update the item's status as 'sent'
// do the completed action here
    }

}

所以基本上脚本连接到服务器并尝试删除文件。如果无法建立连接,或者如果文件无法删除,它当前会执行操作。但我认为暂停它只是坐着没有回应。我需要对所有内容做出响应,因为它是在自动脚本中运行的,并且用户知道发生了什么的唯一方法是脚本是否告诉他们。

如果服务器超时,我该如何获得响应?

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

如果您阅读the manual,则省略超时值,默认为90秒。

您可以将此值设置为更可接受的值并单独验证连接,而不是同时验证连接和登录。

// connect to the ftp server and timeout after 15 seconds if connection can't be established
$connection = ftp_connect($item_server, 21, 15);
if( ! $connection )
{
    exit('A connection could not be established');  
}

// login to the ftp account
if( ! ftp_login($connection, $item_username, $item_password) )
{
    exit('A connection was established, but the credientials seems to be wrong');   
}

请注意,如果登录信用证错误,ftp_login()将发出警告,因此您可能会以其他方式处理此问题(进行错误处理或只是压制警告)。