Скрипт недовыполняется через cron
6863 повідомлення
#10 років тому
Есть тяжеловатый скрипт - формирование xlsx файла на 7000 строк. При запуске через ssh выполняется корректно за 5-7 минут. А из крона - нет. В обеих случаях используется одна и та же команда: /usr/local/bin/php /home/#####//index.php
Часть файла через крон формируется, при чем, выполняется самый долгий цикл. То есть, примерное время вылета - 4-5 минут. Техподдержка хостинга же утверждает, что у них стоит ограничение 60 секунд на все, но это явно не так, так как а) при ручном запуске все выполняется, б) время работы через крон так же явно больше называемой цифры.
Для полноты картины. Скрипт использует стандартные библиотеки php ZipArchive и SimpleXML.
Буду очень благодарна за любые высказанные соображения, которые помогут в устранении проблемы.
39 повідомлень
#10 років тому
/usr/local/bin/php /home/#####//index.php >/dev/null 2>/dev/null
6863 повідомлення
#10 років тому
Спасибо большое. Иду испытыватьминут через 20 буду знать результат.

Не то. Обычная картина, та же, что и без этой приписки.
Я действительно какое-то время назад добавляла вывод отладочной информации в консоль, но дело в том, что после этого несколько раз скрипт по расписанию выполнился корректно, а потом перестал.
834 повідомлення
#10 років тому
floppox,у вас там или инклуды, и запись, или еще что то с неабсолютными путями, работать будет такcd /home/#####/ && /usr/local/bin/php index.php >/dev/nullтоесть сначала переходите в папку там где лежит скрипт, а потом его пускаете
834 повідомлення
#10 років тому
floppox, тогда понятно=) я бы еще рекомендовал команду по SSH/usr/local/bin/php -iскопировать вывод, и найти max_execution_time, должен быть 0, если стоит циферка не 0, тогда PHP CLI тоже слимитирован, хотя редко лимитят его=)
3562 повідомлення
#10 років тому
Все так только перенаправить вывод в файл и почитать ошибки =)Если есть ССШ - запустить из терминала и посмотреть ошибки на экране.
1599 повідомлень
#10 років тому
Даже если решите проблему, то потом возникнут новые. Например, станет не 7000 записей, а 30 тыс. - скрипт будет работать полчаса и вешать весь сервер 
такие вещи разбивают на отдельные куски и ставят на крон на почаще. Сто строк быстренько сделал и замер - за час в 4 утра сделает все 7 тыщ потихоньку.
834 повідомлення
#10 років тому
Crist,а мы обычно берем VPS рублей за 200/мес, ставим php-fpm или php cgi , лимитируем использование процессора 70%, 30% для сайта оставляем если не сильно посещаем=) и не надо извращаться по поводу переписывания на куски выполнения, или писать функционал перезапуска с места обрыва=))) Проще и дешевле=)SmartDesign, Цитата:
Если есть ССШ - запустить из терминала и посмотреть ошибки на экране.Цитата:
а) при ручном запуске все выполняется,писали что при запуске по SSH все ок=)
floppox, ну как вышло?=)
6863 повідомлення
#10 років тому
Цитата (micros):floppox, ну как вышло?=)Нет. Все та же хрень (((
11416 повідомлень
#10 років тому
Не знаю в чем дело, так издали не понятно.У меня было когда-то что-то подобное. Проблема решилась добавлением в начало крона:
set_time_limit(0);
chdir(dirname(__FILE__));
834 повідомлення
#10 років тому
floppox,жаль, ну могу предложить акк у себя на сервере, поставьте скрипт, и попробуем запустить в CGI, и поглядим логи
11416 повідомлень
#10 років тому
Ну да, в начало скрипта, который выполняется по крону 
834 повідомлення
#10 років тому
floppox, сразу добавьте вначалоini_set('log_errors', 'On');php_errors.log сразу создайте по адресу, и поставьте 777 права=) Что бы хоть видеть на чем запинается=)
ini_set('error_log', '/home/ххххх/php_errors.log');