回声"成功"使用ftp_put()之后

时间:2012-01-04 23:00:10

标签: php ftp timeout

我有一个PHP脚本,通过FTP发送大文件。发送文件后,我正在尝试写入浏览器“success”。我还试图向数据库发送查询以记录文件已发送。但是,ftp_put之后的任何代码都没有执行。

if (ftp_put($conn_id, $upload_filename, $filename, FTP_BINARY)) 
{
    echo "File Sent";
    echo $upload_filename." - ".date("d/m/Y H:i:s")." - ".filesize($filename)." bytes<br>" ;
}
else 
{
    echo "Problem while Uploading $filename\n <br/>". $upload_filename ;
}

如果ftp_putfalse,则回音有效。但是,如果ftp_put成功,我放在那里的任何代码都不会运行。

我发送的文件大小为7,305kb

2 个答案:

答案 0 :(得分:0)

这里的问题可能是您的脚本在文件上传时超时。尝试在上面的代码之前添加此行:

set_time_limit(0);

答案 1 :(得分:0)

问题是ftp_put()阻止任何进一步的操作,直到上传完成。尝试ftp_nb_put()(无阻塞),如下所示:

$upload = ftp_nb_put($conn_id, $upload_filename, $filename, FTP_BINARY);

if($upload == FTP_MOREDATA)
{
   echo 'Uploading ' . $upload_filename . ' - ' . date("d/m/Y H:i:s") . ' - ' . filesize($filename) . ' bytes<br />';
   while($upload == FTP_MOREDATA)
   {
       echo '.';  //Output a . to page or do whatever
       $upload = ftp_nb_continue($conn_id);
   }
}

//Note: While in the while above, it will either end in FTP_FINISHED or FTP_FAILED
if($upload == FTP_FAILED)
{
    echo "Problem while Uploading $filename\n <br />". $upload_filename;
}