我正在cronjob中运行PHP脚本,希望每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分钟内与此配置。
7条答案
按热度按时间fdx2calv1#
在
crontab
文件中,字段为:因此:
表示在每小时10分钟后执行
blah
。如果要每五分钟一次,请使用以下任一选项:
指每分钟,但仅为每五分钟,或:
对于不理解
*/x
表示法的旧版cron
可执行文件。如果在此之后它 * 仍然 * 似乎不工作,请将命令更改为如下所示:
并监视该文件以确保每五分钟写入一次内容。如果是,则PHP脚本有问题。如果不是,则
cron
守护进程有问题。1wnzp6jl2#
您的CRON应如下所示:
*/5 * * * *
当您需要测试您的CRON设置时,CronWTF非常有用。
将输出通过管道传输到日志文件中可能是一个好主意,这样您就可以看到脚本是否也抛出了任何错误-因为您不会在终端中看到它们。
也可以尝试在PHP文件的顶部使用一个shebang,这样系统就知道在哪里可以找到PHP。
#!/usr/bin/php
这样你就可以把整件事说成这样
*/5 * * * * php /path/to/script.php > /path/to/logfile.log
c3frrgcw3#
如果您希望每隔
n
分钟运行一次cron,则根据n
的值,有几个可能的选项。n
除以60(1、2、3、4、5、6、10、12、15、20、30)这里,通过使用
/
表示法,解决方案非常简单:在上图中,
n
表示值n
,m
表示小于n
或*
的值。这将在分钟m,m+n,m+2n,...
执行命令n
不能除60如果
n
不能除60,您无法使用cron干净地完成此操作,但这是可能的。为此,您需要在cron中放置一个测试,该测试将检查时间。最好在查看UNIX时间戳时完成此操作。1970-01-01 00:00:00 UTC
之后的总秒数。设'假设我们希望在Marty McFly到达里弗代尔时第一次开始运行该命令,然后每隔n
分钟重复一次。对于在'2015-10-21 07:28:00'之后每隔
42
nd分钟运行一次的cronjob,crontab将如下所示:其中
minutetestcmd
定义为**备注:**UNIX时间不受闰秒的影响
备注:
cron
无亚秒级精度bjg7j2ky4#
您正在设置您的cron运行在每小时的第10分钟。
要将其设置为
every 5 mins
,请更改为*/5 * * * * /usr/bin/php /mydomain.in/cronmail.php > /dev/null 2>&1
tv6aics15#
检查cronjob是否正常工作的2个步骤:
1.以执行cronjob的用户身份登录服务器
1.手动运行php命令:
/usr/中文/php /mydomain.in/cromail.php
并检查是否显示任何错误
gzjq41n46#
要设置x分钟,我们需要在第一个参数中设置x分钟,然后设置脚本的路径
15分钟
e4eetjau7#