Хорошо, это может быть глупый вопрос, но начнем. Я заметил кое-что на днях, когда играл с различными конвертерами HTML в PDF в PHP. Один, который я пробовал (dompdf), работал вечно на моем HTML. В конце концов, ему не хватило памяти, и он закончился, но пока он все еще работал, ни один из моих других PHP-скриптов вообще не реагировал. Это было почти так, как если бы этот один запрос блокировал весь веб-сервер.
Теперь я предполагаю, что либо это не может быть правильным, либо я должен где-то установить что-то, чтобы контролировать это поведение. Может кто-нибудь подскажет мне?
Также есть ошибка в последней версии PHP (5.2.8), которая может сделать ошибку apache segfault в dompdf: bugs.php.net/bug.php?id=44182
У меня было несколько ошибок в моем HTML, но я исправил их, и теперь я запускаю его через HTML Tidy, чтобы исправить ошибки (он проверяет с 0 ошибками после Tidy в соответствии с валидатором W3C), и dompdf все еще подавляется им. В настоящее время я ищу альтернативу html2ps / html2pdf.






Возможно, все сценарии, которые вы пробовали, работают в одном пуле приложений. (По крайней мере, так это называется в IIS.)
Однако другое объяснение заключается в том, что некоторые браузеры ставят запросы в очередь через одно соединение. Это вызывало у меня некоторую путаницу в прошлом. Если ваш веб-браузер ожидает ответа от yourdomain.com/script1.php и вы открываете другое окно или вкладку на yourdomain.com/script2.php, этот запрос не будет отправлен до тех пор, пока первый запрос не получит ответ, что делает его казаться как весь ваш веб-сервер зависает. Простой способ проверить, происходит ли это, попробуйте два запроса в двух разных браузерах.
Похоже, что сервер просто перегружен и слишком загружен для выполнения запросов. Преобразование файла HTML в PDF - довольно сложный процесс, поскольку сценарий PHP должен эффективно обеспечивать те же функции, что и веб-браузер, и отображать HTML с помощью функций рисования PDF.
Я бы посоветовал вам либо разделить HTML на отдельные файлы меньшего размера, либо запустить сценарий как запланированную задачу непосредственно через PHP независимо от сервера.
у вас были открытые сеансы для каждого из сценариев? :) они могут повторно использовать один и тот же сеанс и эти блоки до тех пор, пока сеанс не будет освобожден последним запросом ... поэтому они в основном ждут завершения друг друга (в вашем случае долгий- работает генератор pdf). Это применимо только в том случае, если вы используете один и тот же браузер.
Подсказка, не знаю, зачем вам HTML в PDF, но вы можете взглянуть на FOP http://xmlgraphics.apache.org/fop/ для создания PDF-файлов. Я использую его, и он отлично работает .. и быстро :) Но у него есть свои особенности.
Я создаю документ из фрагментов HTML, так что это HTML. XML (FO) мне не подходит. Однако я не осознавал, что доступ к сеансу заблокирован. Думаю, в этом проблема. Думаю, я предполагал, что они работают как сеансы Java (всегда опасно предполагать такие вещи).
dompdf довольно болезненный - убедитесь, что у вас есть действующий html, и постарайтесь свести вложение (особенно таблицы) к минимуму