LINUX.ORG.RU

Выполнение php скрипта в centos

 ,


0

1

Добрый день. Пытаюсь запустить тяжелый php скрипт в centos на vds тремя способами: через Shell ISP Manager, SSH и непосредственно через веб с помощью nginx. Скрипт представляет собой парсер объемного excel файла. Если в файле содержится ~50 000 строк, то скрипт отлично отрабатывает, как через веб, так и шелл. Но если файл становится тяжелее, то nginx отдает 500 ошибку с логами: [cgi:warn] [pid xxx] [client xxx] AH01220: Timeout waiting for output from CGI script /var/www/php-bin-isp-php55/xxx/php [cgi:error] [pid xxx] [client xxx] Script timed out before returning headers: php а шелл и ssh просто висят и ничего не происходит. Как понять, в чем причина и почему не отрабатывает скрипт? Какие логи посмотреть, конфиги ковырять? Спасибо.

Посмотри потребление ресурсов процессом пхп, который выполняет скрипт. Может быть он тупо уходит в бесконечный цикл.

PoMbl4
()
Ответ на: комментарий от PoMbl4

И при положительном и отрицательном результате php отъедает практически 100% процессорного времени. Единственная разница в том, что когда скрипт не отрабатывает, он умирает чуть позже, примерно через 2 минуты. Все циклы из скрипта исключил. Умирает при попытке открыть файл. Использую три разные библиотеки - результат один (PHPExcel, Spout, Spredsheet-parser). Такое впечатление, что скрипт упирается в какой-то лимит то ли оси, то ли пхп и тупо не может справиться с размером. Потому что если на 60к строках он зависает, то 50к отрабатывает примерно за 30 секунд без проблем.

ebmaster
() автор топика
Ответ на: комментарий от Black_Shadow

В php.ini стоит max_execution_time = 600; В любом случае, php процесс умирает раньше двух минут. Я правильно понимаю, что править его нужно в etc/php.ini? Если что, под веб в /var/www/php-bin-isp-php55 тоже исправлено.

ebmaster
() автор топика
Ответ на: комментарий от ebmaster

Я правильно понимаю, что править его нужно в etc/php.ini?

Это уже зависит от настроек твоего дистрибутива. Иногда делают разные конфиги для cli и mod_php.

Black_Shadow ★★★★★
()

Но зачем....[2]

Твоя проблема не в том, что кто-то убивает пхп, а в том, что ты для этой задачи вообще его используешь.
Не используй пхп для парсинга xls(х), у меня от этого брат умер. Поставь gnumeric и дергай его. Просто, быстро, безболезненно.

NeverLoved ★★★★★
()

также можно использовать очереди. напримере, gearman. запустить гирмана, создать воркера, запустить через systemd, а клиента-консюмера через ваш скрипт. теперь вся тяжесть работы ляжет на воркера и не будет зависит от php-скрипта.

Nurmukh ★★★
()
Ответ на: комментарий от mumpster

самое разумное, а там и до man-ов рукой подать

anonymous
()
Ответ на: комментарий от NeverLoved

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

ebmaster
() автор топика
Ответ на: комментарий от goingUp

К сожалению не я решаю, с какими форматами работать. Что юзер грузит, то и парсю.

ebmaster
() автор топика
Ответ на: комментарий от Nurmukh

Спасибо, никогда не слышал о таком. Пошел читать мануалы и пробовать. По факту отпишусь.

ebmaster
() автор топика
7 ноября 2016 г.
Ответ на: комментарий от ebmaster

плавали-знаем

там ещё куча их: log_errors, display_errors, display_startup_errors

всё надо проверить.

вангую, что где-то в лимиты упёрлось. возможно что и ОС. про gearman - любопытно - на досуге посмотрю.:-)

mumpster ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.