我有一个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_put
为false
,则回音有效。但是,如果ftp_put
成功,我放在那里的任何代码都不会运行。
我发送的文件大小为7,305kb
答案 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;
}