我如何使用这个PHP时间脚本来安排没有cron的脚本?

时间:2011-12-31 15:12:04

标签: php cron scheduling

我找到了一个可以安排脚本执行的脚本。我是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

1 个答案:

答案 0 :(得分:4)

更好的方法是使用cron。这很简单,虽然起初可能看起来很吓人:

步骤1 - 创建将由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

第2步 - 添加crontab条目

要自动执行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线路描述

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