The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Особенности работы длительно выполняющихся PHP скриптов в Apache
Рассмотрим поведение Apache при принудительном закрытии клиентом окна браузера, в котором отображался вывод еще не завершенного PHP скрипта. Например, скрипт зациклился или пользователь устал ждать конца операции.

Особенность в том, что скрипт будет принудительно завершен, только в момент физического вывода данных, т.е. после сброса буфера, например после отправки большого числа данных или вызова функций ob_flush() и flush(). Если вывода данных клиенту не производится или буфер вывода остается несброшенным, то скрипт так и будет выполняться до истечении времени заданного через параметр настройки PHP - max_execution_time. При этом не важно, в какое значение в конфигурации PHP установлен параметр ignore_user_abort.

В качестве обходного пути для прерывания скриптов в течение длительного времени не производящих вывод данных, например, вследствие выполнения длительного SQL запроса, можно использовать расширение pcntl, вызывая функцию pcntl_alarm(таймаут). В отличие от max_execution_time/set_time_limit, определяющих максимальное время утилизации CPU (при выполнении запросов к SQL серверу процессорное время расходуется минимально и скрипт может оставаться висеть днями), функция pcntl_alarm оперирует секундами реального времени.

 
26.05.2008 , Автор: mysqlperformanceblog.com , Источник: http://www.mysqlperformanceblog.com...
Ключи: web, script, apache, php
Раздел:    Корень / Администратору / Сетевые сервисы / WWW, Apache httpd / Ограничение доступа и ресурсов, безопасность

Обсуждение [ RSS ]
  • 1, Kabancheg (?), 12:23, 28/05/2008 [ответить]  
  • +/
    Смысл не уловил...
    Чем
    set_time_limit(0);
    ignore_user_abort(true);
    не угодили? или я чего-то не понял...
     
  • 2, User294 (ok), 15:06, 28/05/2008 [ответить]  
  • +/
    Смысл туп как валенок - если скрипт повис и жрет оперативу но не грузит проц - будет сутками висеть.А если таких скриптов повиснет дофига - на сервере закончится память и начнется ахтунг :)
     
  • 3, User294 (ok), 15:07, 28/05/2008 [ответить]  
  • +/
    А если о фишке пронюхал хакер - он может и злонамеренно вызывать такой эффект, создавая DoS на сервер по сути с минимальными затратами.
     
  • 4, Andrey Zentavr (?), 11:30, 03/06/2008 [ответить]  
  • +/
    Мои юзвери так ложили Fedora Core 8 на которой Индеец стоял и Invision power Board
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру