我找到了一个可以安排脚本执行的脚本。我是PHP的新手,我不想使用cron。这是我找到的脚本:
<?php
$hour = date('G');
$day = date('N'); // 1..7 for Monday to Sunday
if (($hour >= 5 && $hour <= 7) // 5am - 7am
|| ($hour >= 10 && $hour <= 12) // 10am - 12 noon
|| ($hour >= 15 && $hour <= 19) // 3pm - 7pm
|| ($day == 5) // Friday
) { ?>
//my script
<?php } ?>
因为我知道的很少,如果我把我的脚本放在它说的地方,那么每次发生时它会在那个特定的时间执行吗?先感谢您! -ben
答案 0 :(得分:4)
更好的方法是使用cron。这很简单,虽然起初可能看起来很吓人:
例如,将其放在<your-app-root>/cron.php
:
<?php
$CRON_KEY = "some-random-value-here";
if ($_GET['key'] != $CRON_KEY) {
header(“HTTP/1.0 403 Forbidden”);
echo "You have no rights to access this page.";
exit();
}
// Your code here
要自动执行cron.php
脚本,您可以将此行添加到/etc/crontab
:
## This will run each day at 2:30 AM
30 2 * * * www-data wget -O - -q http://yourdomain.com/cron.php?key=some-random-value-here &> /tmp/my-app-cron.log
..其中some-random-value-here
必须与PHP脚本中的随机值匹配。这是一项安全功能,可以防止任何人运行您的cron代码。
crontab行的前五个部分是:分钟,小时,月,月,星期几。
您也可以使用范围,例如每天在5,7,8,12,13,14,15,20运行脚本,您可以使用它:
0 5-8,12-15,20 * * * ...
您也可以使用“步骤”,例如每5分钟运行一次(建议用于循环作业,例如索引/清理任务等):
*/5 * * * * ...
第六个参数是将用于执行命令的用户。你可以在这里使用你想要的任何用户,www-data,nobody,你的用户等。最好的做法是永远不要在这里使用root,除非出于某种原因真的需要。
该行的剩余部分是将在预定时间运行的命令。
&> /tmp/my-app-cron.log
部分将使您最新的cron.php执行的所有输出存储在/tmp/my-app-cron.log
内。
有关cron使用的更多信息,请参阅crontab(5)
:
$ man 5 crontab