Эхо "успех" после использования ftp_put () - PullRequest
0 голосов
/ 05 января 2012

У меня есть скрипт php, который отправляет большие файлы по FTP.После отправки файла я пытаюсь написать в браузер "успех".Я также пытаюсь отправить запрос в базу данных, чтобы записать, что файл был отправлен.Однако любой мой код, который появляется после 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

Ответы [ 2 ]

0 голосов
/ 05 января 2012

Дело в том, что 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;
}
0 голосов
/ 05 января 2012

Вероятно, проблема здесь в том, что ваш сценарий истекает во время загрузки файла.Попробуйте добавить эту строку перед кодом выше:

set_time_limit(0);
...