【问题标题】:run a php script with cron that schedules events使用 cron 运行一个 php 脚本来安排事件
【发布时间】:2012-01-08 22:02:27
【问题描述】:

我正在尝试在每个月的三个不同时间运行不同的脚本,每天、每个星期一和每月的第一个星期一,我在这里的人的帮助下整理了以下内容,cron 将运行这个每天一次,相应的脚本将在预设的时间运行。

除了将其放在服务器上并等待选定的日期之外,我是否可以测试以下内容?,我正在运行本地 apache 服务器,如果我将日期更改为该月的第一天并运行它,这样可以吗?。

这一切都正确吗? :

<?php
$RUN_everyday = `/path/to/php/everyday.php`;
$RUN_everymonday = `/path/to/php/everymonday.php`;
$RUN_firstmondayofmonth = `/path/to/php/firstmondayofmonth.php`;


date_default_timezone_set('Europe/London');
$weekday = date('D');
$dayOfMonth = date('d');
// runs the everyday php file
echo '$RUN_everyday';
if ($weekday == 'Mon')
{
//runs the every monday php file every monday of the week
echo '$RUN_everymonday';
if ($dayOfMonth <=6)
//runs the first monday of the month php file on the first monday of each month
echo '$RUN_mondayofmonth';
}
?>

【问题讨论】:

  • 我的想法是否正确,您使用 cron 来触发此脚本的执行?而这个脚本本身应该触发其他三个脚本?为什么不直接用cron来触发这三个脚本呢?因为它非常直观,所以我还要说不需要对 cron 设置进行大量测试。
  • if ($dayOfMonth &lt;=6) 实际上应该是 if ($dayOfMonth &lt;=7)。很抱歉。

标签: php date scheduler


【解决方案1】:

我会通过手动设置这些变量来测试它:

date_default_timezone_set('Europe/London');
//$weekday = date('D');
//$dayOfMonth = date('d');
$weekday = 4;      // <-----------
$dayOfMonth = 14;  // <-----------
// runs the everyday php file
echo '$RUN_everyday';

将其更改为您想要测试并触发它的任何值 - 看看会发生什么!

【讨论】:

  • 谢谢 :-) ,我试过的时候看起来还可以
  • 另外,我没有注意到您的用户名。折断。伊恩·辛普森,为您服务 ;)
【解决方案2】:

我建议使用几乎每个人都用于此类工作的工具:cron。

【讨论】:

  • 我如何检查客户是否是每个星期一组的成员以及他们是否向他们发送了价格?
  • 您可以在 cron 调用的脚本中编写该逻辑。
【解决方案3】:

我不会添加 php 层来执行此操作。 Cron 可以自己处理这种调度。

应该这样做:

0 0 * * * php every_day_midnight.php
0 0 * * 1 php every_monday_midnight.php
0 0 0-6 * 1 php first_monday_midnight.php

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 1970-01-01
    • 2011-11-07
    • 2012-04-20
    • 1970-01-01
    • 2012-06-03
    • 2012-06-27
    • 1970-01-01
    • 2014-11-01
    相关资源
    最近更新 更多