Елена Б.
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 років тому
mrGracer, это в крон добавить, я правильно поняла?
Сергей З.
39 повідомлень
#10 років тому
floppox, да
Елена Б.
6863 повідомлення
#10 років тому
Спасибо большое. Иду испытывать
минут через 20 буду знать результат. 
  
Не то. Обычная картина, та же, что и без этой приписки.
Я действительно какое-то время назад добавляла вывод отладочной информации в консоль, но дело в том, что после этого несколько раз скрипт по расписанию выполнился корректно, а потом перестал. 
Сергей Глушко
834 повідомлення
#10 років тому
floppox,у вас там или инклуды, и запись, или еще что то с неабсолютными путями, работать будет так
cd  /home/#####/ && /usr/local/bin/php index.php >/dev/null
тоесть сначала переходите в папку там где лежит скрипт, а потом его пускаете
Елена Б.
6863 повідомлення
#10 років тому
Инклудов море  
Попробую и это 
Сергей Глушко
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__));
Елена Б.
6863 повідомлення
#10 років тому
max_execution_time => 0 => 0
Сергей Глушко
834 повідомлення
#10 років тому
floppox,жаль, ну могу предложить акк у себя на сервере, поставьте скрипт, и попробуем запустить в CGI, и поглядим логи 
Елена Б.
6863 повідомлення
#10 років тому
Hungry_Hunter, в начало скрипта, может?
Артем Л.
11416 повідомлень
#10 років тому
Ну да, в начало скрипта, который выполняется по крону
Елена Б.
6863 повідомлення
#10 років тому
Через минуту стартанет по-новой. Поглядим. 
Сергей Глушко
834 повідомлення
#10 років тому
floppox,  сразу добавьте вначало
ini_set('log_errors', 'On');
ini_set('error_log', '/home/ххххх/php_errors.log');
php_errors.log сразу создайте по адресу, и поставьте 777 права=) Что бы хоть видеть на чем запинается=)
Елена Б.
6863 повідомлення
#10 років тому
Не поддается там это настройкам. Фигня полная... Остается только уговаривать зака на впс.