#php #apache #amazon-ec2 #cron #shell-exec
#php #апач #amazon-ec2 #крон #оболочка-исполнитель
Вопрос:
Я запускаю apache на сервере AWS EC2. С помощью PHP shell_exec
я создаю список моих запущенных заданий cron. Список длинный, ~4000 строк, каждое задание cron имеет одну из трех разных конечных точек и переменную.
Вот фрагмент списка, когда я запускаю shell_exec('crontab -l')
:
MAILTO="" 1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_trend.php 1 1 13 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_portfolio_live.php 1 1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_portfolio_close.php 1 1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_trend.php 2 1 13 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_portfolio_live.php 2 1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_portfolio_close.php 2 1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_trend.php 3 1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_trend.php 8 1 13 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_portfolio_live.php 8 1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_portfolio_close.php 8 1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_trend.php 9 1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_trend.php 10 1 13 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_portfolio_live.php 10 1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/email_portfolio_close.php 10 ...
Я добавил журнал, который улавливает ответ при запуске конечной точки, но по какой-то (неизвестной) причине выполняется только около 95% заданий cron.
Один из закадычных друзей, который не стреляет, — это первая строка:
1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/send_trend.php 1
Но строка № 4 (та же конечная точка, но другая переменная) срабатывает:
1 22 * * 1-5 /usr/bin/php /var/www/html/engine/emails/send_trend.php 2
Я удалил конечные точки, чтобы регистрировать только вызываемый файл, так что ничего не зависит от
Все конечные точки работают вручную при выполнении shell_exec('/usr/bin/php /var/www/html/engine/emails/send_portfolio_live.php 1');
, но не обязательно с помощью заданий хронометража.
Поскольку кронтаб создается через shell_exec
(что требуется из — за структуры системы), я не думаю, что смогу где-либо найти журнал ошибок для заданий cron-пожалуйста, поправьте меня, если я ошибаюсь.
Дай мне знать, что ты думаешь?
Комментарии:
1. Почему
shell_exec
используется дляcron
процесса? Вы могли бы поставитьgt; /var/log/something.log
после сценария, чтобы посмотреть, что произойдет, когда он запустится.shell_exec('/usr/bin/php /var/www/html/engine/emails/send_portfolio_live.php 1 gt; /var/log/something.log');