сон не работает внутри оператора php IF - PullRequest
1 голос
/ 01 октября 2019

У меня есть простой код на PHP, который после перемещения выгруженного файла нужно распечатать некоторую информацию, но проблема в том, что у меня есть Sleep () внутри оператора IF, и весь текст до и после сна просто показываеткогда закончится подсчет сна.

Код ниже:

<code>if(move_uploaded_file($_FILES['uploadvideo']['tmp_name'],$target_path))
{
echo "<pre>";
echo "Your video ".$cname." has been successfully uploaded<br>";
echo sha1_file($target_path)."<br>";
echo md5_file($target_path)."<br>";
ob_end_flush();
flush();
sleep(2);
echo "Please check if your file is good";
echo "
";}

Если я ставлю флеш и сплю снаружи, ЕСЛИ все работает хорошо.

Вопрос в том, что оператор Sleep () можно вставить внутри IF?

Спасибо!

Ответы [ 2 ]

1 голос
/ 02 октября 2019

sleep() работает отлично. Но это не может помочь вам в достижении вашей цели.

flush() не может принудительно отправить созданный вами контент до sleep() обратно клиенту (браузеру). Все, что он делает, это подталкивает его вниз по линии. Но он не может контролировать, что происходит с текстом, когда он выходит из интерпретатора. Веб-сервер может кэшировать контент и отправлять его вместе с остальным контентом, когда сценарий завершается. И иногда сам браузер не отображает фрагмент текста, пока не получит его полностью.

Это объясняется в документации flush().

Вы можете использовать JavaScript и AJAX для достижения желаемого эффекта (и, фактически, для правильной его реализации).

0 голосов
/ 02 октября 2019

Необходимо указать кодировку

header('Content-type: text/html; charset=utf-8');

, и она все еще может не работать. Попробуйте сбрасывать после каждого эхо-оператора, и даже тогда не все могут быть сброшены. Сброс буфера вывода отправляет только данные на вывод, отправка их в браузер не гарантируется.

...