如何使用php脚本生成以特定间隔执行的操作

时间:2016-10-26 16:14:03

标签: php cron

我正在开发一个应用程序,并且想要使用cpanel cron作业设置某个PHP脚本每10分钟运行一次。

*/10 * * * * php /path/to/my/site/cronjobs/index.php

但现在,这是我更关心的部分,因为在index.php文件中,我想编写一个函数,根据结果分隔动作,以毫秒为单位。时间服务器。

例如,

  • 每30分钟(3 * 10分钟),我希望index.php运行查询A
  • 每50分钟(5 * 10分钟),我希望index.php运行查询B
  • 每10天(10 * 24 * 6 * 10分钟),我希望index.php运行查询C
  • 每20小时(20 * 6 * 10分钟),我希望index.php运行查询D
  • 每12个小时(10 * 6 * 10分钟),就像在午夜和12点一样,我想让它运行查询E

如果你注意到它们都在这个范围内,10分钟cron执行时间但我不确定如何去做,是否从时间服务器的毫秒读取或写我自己的功能我觉得是错误的做法。

1 个答案:

答案 0 :(得分:1)

这可以让你接近目标。

// set this to your personal "epoch" from which you want
// all counting to begin
$startdatetime = strtotime('2016-01-01 00:00:00');
$time_advanced = time()-$startdatetime;

$min10 = 60*10;

$t['mins30'] = $min10*3;
$t['mins50'] = $min10*5;
$t['days10'] = $min10*10*24*6;
$t['hours20'] = $min10*20*6;
$t['hours12'] = $min10*10*6;

foreach ($t as $key=>&$time) {
  if ($time_advanced % $time === 0) {
    switch ($key) {
      case 'mins30': A(); break;
      case 'mins50': B(); break;
      case 'days10': C(); break;
      case 'hours20': D(); break;
      case 'hours12': E(); break;
    }
  }
}