PHP: лучший метод для последовательного вывода? - PullRequest
1 голос
/ 15 апреля 2009

Каков наилучший подход для настройки последовательного вывода для скрипта установщика PHP? Скажем, у меня есть страница, и я хочу отображать инкрементный вывод в DIV, предоставленном скриптом PHP.

Так что page.html может содержать это:

<div id="output">
    <!-- Script Output Here -->
</div>

И install.php может выглядеть так (для целей тестирования):

<?php
// Turn off Output Buffering
ob_end_flush();

// Begin Test Output (5 second intervals)
echo 'Testing incremental output...' . "\n";
sleep(5);
echo 'Step 1...' . "\n";
sleep(5);
echo 'Step 2...' . "\n";
sleep(5);
echo 'Complete!' . "\n";

Я думал, что AJAX может быть лучшим подходом, но я не уверен, как подойти к этому. Если я загружаю «install.php» с помощью JavaScript, я не буду получать все обратно, пока сценарий не закончит выполнение (правильное?) - что делает всю эту цель спорной. Я видел это сделано раньше, но не могу найти конкретный пример того, как это было сделано.

Любая помощь приветствуется!

Ответы [ 2 ]

2 голосов
/ 15 апреля 2009

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

Для сброса информации, как только она получена, вам нужно регулярно flush() после вывода информации.

Я также добавил в соответствующий файл .htaccess строку, чтобы избежать буферизации из-за GZipping вывода (apache2).

SetEnvIf Request_URI "/url/dont/buffer/me.php" gzip=0

В соответствующем PHP-файле:

ini_set('output_buffering', false);
ini_set('implicit_flush', 'true');

и соответствующие вызовы для сброса (). Это в значительной степени охватывает все основы.

0 голосов
/ 15 апреля 2009

Я бы вывел все в текстовый файл и обновил DIV через AJAX, просто вызвав файл .txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...