Сценарий cakeLong в PHP работает, но содержимое не отправляется в браузер

У меня есть действие контроллера CakePHP, которое может занять до 15 минут.

Я установил PHP time_limit, чтобы учесть это, и скрипт работает нормально.

Проблема, с которой сталкивается мой клиент, заключается в том, что скрипт не обеспечивает никакого возврата, так как кажется, что BROWSER (Firefox в большинстве случаев) задерживает запрос, так как скрипт не предоставит никакого вывода до его завершения. Я могу подтвердить, что скрипт выполнялся правильно, потому что в конце он включает в себя основной INSERT, и я могу проверить это из MySQL, но он не может отобразить страницу результатов.

Что я могу сделать в этих случаях? Предоставляет ли CakePHP способ сбрасывать частичные ответы, чтобы избежать тайм-аута браузера (если это так …)?

Любые другие намеки на то, что может происходить?

Спасибо!

0

Решение

Eсть flush() функция доступна в PHP (http://php.net/manual/en/function.flush.php), что должно означать, что PHP очищает свои буферы записи.

Пожалуйста, обратите внимание: что это основано на чем-то, что я делал раньше — я уверен, что должен быть лучший / более элегантный способ сделать это.

Если вы не возражаете против того, есть ли вывод в браузер или нет, вы можете просто выводить пустую строку пробелов каждые 15 секунд или около того.

В качестве примера:

# Every 15 seconds:
echo str_repeat(' ', 100);
flush();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]