Блокировка PHP / Apache на каждый запрос? - PullRequest
1 голос
/ 10 января 2009

Хорошо, это может быть глупый вопрос, но здесь идет. Однажды я заметил кое-что, когда играл с различными конвертерами HTML в PDF в PHP. Один, который я попробовал (dompdf), занял целую вечность в моем HTML. В конце концов ему не хватило памяти и он закончился, но пока он еще работал, ни один из моих других PHP-скриптов вообще не отвечал. Как будто этот запрос блокировал весь веб-сервер.

Теперь я предполагаю, что это не может быть правдой, или я должен что-то установить, чтобы контролировать это поведение. Может кто-нибудь подсказать, пожалуйста?

Ответы [ 3 ]

7 голосов
/ 10 января 2009

у вас были открытые сеансы для каждого из сценариев? :) они могут повторно использовать один и тот же сеанс, и это блокирует, пока сеанс не освобождается по последнему запросу ... поэтому они в основном ждут завершения друг друга (в вашем случае длительный генератор PDF). Это применимо только если вы используете тот же браузер.

Совет, не уверен, почему вы хотите, чтобы html pdf, но вы можете взглянуть на FOP http://xmlgraphics.apache.org/fop/ для генерации PDF. Я использую его и отлично работает ... и быстро :) Хотя у него есть свои причуды.

2 голосов
/ 10 января 2009

Возможно, что все сценарии, которые вы пробовали, выполняются в одном пуле приложений. (По крайней мере, так оно называется в IIS.)

Однако другое объяснение состоит в том, что некоторые браузеры будут ставить запросы в очередь по одному соединению. Это вызвало у меня некоторую путаницу в прошлом. Если ваш веб-браузер ожидает ответа от yourdomain.com/script1.php и вы открываете другое окно или вкладку для yourdomain.com/script2.php, этот запрос не будет отправлен до тех пор, пока первый запрос не получит ответ, делая его кажется как будто весь ваш веб-сервер завис. Простой способ проверить, происходит ли это, попробуйте два запроса в двух разных браузерах.

0 голосов
/ 10 января 2009

Похоже, сервер просто перегружен и слишком загружен для выполнения запросов. Преобразование HTML-файла в PDF является довольно сложным процессом, поскольку PHP-скрипт должен эффективно обеспечивать те же функции, что и веб-браузер, и отображать HTML-код с использованием функций рисования PDF.

Я бы посоветовал вам либо разбить HTML-код на отдельные файлы меньшего размера, либо запустить скрипт как запланированное задание напрямую через PHP, независимо от сервера.

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