Такой вопрос может кто сталкивался: PHP скрипт выдает всю выдачу Apache-у только после того как будет завершен скрипт. Можно ли как-то это обойти и выдавать выдачу по частям в процессе работы скрипта? Как пример скрипт: print "123"; Пауза в 10 минут print "567"; Чтобы он выдал клиенту 123 сразу потом сделал паузу и потом 567, а не так-пауза 1234567. Была функция проверки коннекта с клиентом, но этого не достаточно. Планируется запускать скрипт на многочасовое исполнение с постоянным ежеминутным мониторингом его состояния и передачей данных. Передача через 3 сервер исключена (сервак исполняющий скрипт режет исходящие соединения). Кто знает как это реализовать именно на PHP?
отдавайте блоками бОльшими чем размер tcp-пакета (обычно 512-1500 байт) да.. и никаких <table> ессно...
А он вообще будет отдавать блоками? Он разве не ждет конца скрипта? мож там функцию надо какую использовать чтобы он выдачу отдавал?
Еще вопрос на эту же тему: Если скрипт уже работает и принял свои параметры из ENV, можно ли каким-нибудь образом ему отсылать новые данные чтобы он их принимал в этой же TCP сессии без перезапуска скрипта? Тое чтобы был полнофункциональный обмен с работающим скриптом без его перезагрузки.
если в скрипте не используется буферизация вывода ob_start(), то web-сервер отдает контент при заполнении своего буфера (обычно достаточно дать ему 512 пробелов) и при этом никто не ждет никакого завершения скрипта...
AGE, по "второму" вашему вопросу: 1) каждый запрос броузера к веб-серверу - новый запуск скрипта 2) но можно сделать так чтобы скрипт сам принимал запросы (см.доки по работе с сокетами)
Не знаю, хорошая ли идея: PHP: <?php set_time_limit (0); echo "123"; flush (); sleep (60 * 10); echo "456"; flush ();
Vitas, вы спрашиваете? лучше бы попробовали... Попробуйте лучше вот так: PHP: <?php print "123". str_repeat(" ", 512); flush(); sleep(20); print "123". str_repeat(" ", 512); flush(); ?>
Нет прав на открытие порта. Файервол позволяет только через 80. Так, flush действительно кажется то, что надо. Теперь как всетаки получать параметры в данной сессии? Может как-нибудь попробывать перехватить сокет соединения или раздвоить его на два чтобы был recive сразу аппачу и скрипту? Может есть какие-нибудь типы заголовков для апача для передачи дополнительных параметров? Можно конечно сделать еще один скрипт который будет принимать параметры в файл или в сокет домена Unix, но это не красиво и задержки с блокировками, хотелось бы покрасивей сделать. по человечески.