Сайт переехал на новый сервер, теперь при экспорте возникает ошибка преждевременного завершения заголовков скрипта

Я переносил старый клиентский сайт (Kohana 2.3) с одного из своих серверов на сторонний сервер и теперь получаю сообщение об ошибке преждевременного завершения заголовков скрипта, когда я либо пытаюсь экспортировать данные из своей базы данных, либо пытаюсь отправить электронные письма на мои клиенты примерно через 30-40 секунд обработки.

Я попытался увеличить php.ini, чтобы увеличить максимальный лимит памяти и максимальный лимит времени, но безрезультатно, выдавая ту же ошибку.

Я попытался вручную уменьшить количество элементов, которые будут экспортированы, и заставил его запускать сценарий без ошибок для чего-то между 700-750 элементами, но это увеличивается и уменьшается всякий раз, когда я запускаю сценарий. Текущие данные, которые я использую, содержат более 5000 элементов.

Запуск memory_get_peak_usage возвращает, что я использую максимум немного меньше 16 МБ памяти для выполнения этих скриптов, поэтому я достаточно уверен, что не превышаю никаких ограничений памяти, поскольку мой предел памяти php составляет 256 МБ.

Установка ограничения времени в php на 5 секунд будет генерировать ошибку тайм-аута вместо ошибки преждевременного завершения скриптов, но, как ожидается, это не поможет.

Странно то, что ни в какие журналы ничего не пишется. Я проверил журналы php, журналы Kohana и журналы apache, и нет ничего, что указывало бы мне на то, что может быть причиной этой проблемы.

Мне было интересно, сталкивался ли кто-нибудь с этим раньше или имел какие-либо идеи о том, куда я должен пойти с этим.


person Andrew Jankovic    schedule 14.04.2015    source источник
comment
Оказалось, что проблема с максимальным ограничением времени процессора. Код превысил RLIMIT_CPU. Повышение этого позволило экспорту работать без проблем.   -  person Andrew Jankovic    schedule 08.05.2015


Ответы (1)


Проверьте, есть ли у вас файл /var/log/apache/suexec.log; если это так, и если это проблема, это объяснит причину, по которой он отказывает вашему скрипту в правильном выполнении. Одним из простых способов исправления является добавление «-w» в конец первой строки вашего Perl-скрипта, т. е. изменение первой строки с «#!/usr/bin/perl» на «#!/usr/bin/perl». -w" и посмотрите, обрадует ли это suEXEC. Еще одно распространенное исправление — убедиться, что ваш CGI-скрипт принадлежит тому же пользователю/группе, что и ваша папка cgi-bin.

person Mariyo    schedule 17.04.2015