2015-04-07 1 views
-1

Я пытаюсь отобразить изображение во время загрузки фотографий, поэтому пользователи знают, что мой сайт что-то делает, а не просто сидит там. По какой-то причине я могу заставить его работать нормально в автономном режиме, но не в Интернете. Вот соответствующая часть моего кода:ob_flush работает офлайн, а не онлайн

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ 
    echo '<div id="progress"><img src="images/ani_hiker.gif"/> 
     <p align="center">Photos uploading...<br/>slow and steady!</p></div>'; 
    ob_end_flush(); 
    flush(); 
    ob_flush(); 
    foreach ($_FILES['files']['name'] as $i => $name) { 
      //uploading files junk 
    } 
    echo '<script language="javascript"> 
     alert("Photos added successfully!"); 
     window.location.href="index.php?username='.$profile_link.'&select=photos"; 
     </script>'; 

Как уже упоминалось ранее, работает совершенно автономно, а не в сети. Когда я пытаюсь подключиться к Интернету, загрузка фотографий и отображение div после завершения загрузки, а не во время загрузки, отображаются в поле предупреждения. Изображение внутри div не появляется до тех пор, пока вы не нажмете «ОК» в окне предупреждения, а затем мигает в течение секунды секунды, пока div не исчезнет, ​​и вы перейдете на другую страницу (как и ожидалось).

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

+0

отключить буферизацию вывода делает 'ob_' функции ничего не делают ... –

+0

Смотрите этот ответ: http://stackoverflow.com/a/4978642/811240 – Mike

+0

Можете ли вы определить, что _«работает в автономном режиме»_ означает , PHP по своей природе обычно запускается на веб-сервере. Вы ссылаетесь на свой локальный сервер? ... – War10ck

ответ

-1

Желаемое поведение, кажется, что-то, что есть и всегда будет исключительно для вашей локальной машине -

От php.net manual:

По состоянию на август 2012 года, все браузеры, кажется, показывают All- или-ничего подход к буферизации. Другими словами, в то время как php работает, содержимое может быть показано.

В частности, это означает, что следующие обходные перечисленные далее здесь малоэффективны:

1) ob_flush(), Flush() в любой комбинации с другими выходной функции буферизации;

2) изменения в php.ini с установкой output_buffer и/или zlib.output_compression для 0 или Off;

3) установка переменных Apache, таких как «no-gzip», либо через apache_setenv(), либо через записи в .htaccess.

Таким образом, пока браузеры не начнут показывать буферный контент снова, советы , перечисленные здесь, являются спорными.

+0

Это не похоже на проблему с браузером, потому что OP говорит, что он работает «в автономном режиме» (я предполагаю, что это означает на локальном веб-сервере). – Mike