Я запускаю PHP-скрипт в cronjob, и я хочу отправлять электронные письма каждые 5 минут
Мой текущий (crontab) cronjob:
10 * * * * /usr/bin/php /mydomain.in/cromail.php > /dev/null 2>&1
Cronmail.php выглядит следующим образом:
<?php $from = 'D'; // sender $subject = 'S'; $message = 'M'; $message = wordwrap($message, 70); mail("myemail@gmail.com", $subject, $message, "From: $from\n"); ?>
Но я не получил электронное письмо через 30 минут с этой конфигурацией.
В файле crontab
поля:
Так:
10 * * * * blah
означает выполнение blah
через 10 минут каждый час.
Если вы хотите каждые пять минут, используйте либо:
*/5 * * * * blah
что означает каждую минуту, но только каждый пятый, или:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * blah
для старых исполняемых файлов cron
которые не понимают нотацию */x
.
Если после этого все еще не работает, измените команду на что-то вроде:
date >>/tmp/debug_cron_pax.txt
и следить за тем файлом, чтобы что-то было написано каждые пять минут. Если это так, что-то не так с вашими PHP-скриптами. Если нет, что-то не так с вашим демоном cron
.
Ваш CRON должен выглядеть так:
*/5 * * * *
CronWTF действительно полезен , когда вам нужно проверить свои настройки CRON.
Может быть хорошей идеей, чтобы вывести вывод в файл журнала, чтобы вы могли видеть, что ваш скрипт тоже набрасывает какие-либо ошибки, так как вы не увидите их в своем терминале.
Также попробуйте использовать shebang в верхней части вашего PHP-файла, поэтому система знает, где найти PHP. Такие как:
#!/usr/bin/php
таким образом вы можете назвать все это так
*/5 * * * * php /path/to/script.php > /path/to/logfile.log
Вы устанавливаете свой cron для запуска на 10-й минуте в каждый час.
Чтобы установить его every 5 mins
измените на */5 * * * * /usr/bin/php /mydomain.in/cronmail.php > /dev/null 2>&1
2 шага, чтобы проверить, работает ли cronjob:
Вручную запустить команду php:
/ usr / bin / php /mydomain.in/cromail.php
И проверьте, отображается ли какая-либо ошибка.