пятница
Управление ответом в php скрипте
Однажды мне понадобилось отправлять ответ пользователю в браузер до завершения работы php-скрипта. Известно, что даже такой простой скрипт не отпустит посетителя со страницы в течение 20 секунд:
<?php
header("Location: http://www.bloged.org",TRUE,301);
sleep(20);
?>
Т.е. пока скрипт не завершит свою работу, по умолчанию результат не уйдет в браузер и редиректа не случится. Однако, это ограничение можно обойти, например так:
<?php
set_time_limit(80);
header("Location: http://www.bloged.org",TRUE,301);
header("Content-Length: 0");
header("Connection: close");
flush();
error_log("Это пишется сразу в лог\n", 3, "/ramdisk/log.txt");
sleep(60);
error_log("А это через минуту\n", 3, "/ramdisk/log.txt");
?>
Несмотря на то, что пользователь уже перенаправлен в другое место, скрипт будет работать еще минуту и в логи запишет все, что надо.
Ярлыки: Полезное, Программирование
Комментарии:
Ссылки на это сообщение:
<< Главная страница
Конечно, длительные скрипты нужно выполнять через cli, чтобы не пользователь не зависел от этого и разработчик не зависел от set_time_limit.
А в общем любопытно!Спасибо!
Отправить комментарий
А в общем любопытно!Спасибо!
Подпишитесь на каналы Комментарии к сообщению [Atom]
Ссылки на это сообщение:
<< Главная страница
