Cron通过self递增分钟间隔

时间:2015-07-28 10:37:46

标签: php cron

我对cron有些奇怪。我的目标是检查用户的新帖子,并为每个用户注册cron作业。 cron中的最小时间单位是分钟,但我必须尽可能经常检查。所以我找到了使用sleep注册几个cron作业的解决方案,并在每10秒后检查一次用户。我使用了以下内容:

$user->register_cron('curl "http://app.dreamasik.com/api/insta/gatherPosts/' . $user->id . '"', '* * * * *');
                    $user->register_cron('curl "http://app.dreamasik.com/api/insta/gatherPosts/' . $user->id . '"', '* * * * * sleep 10');
                    $user->register_cron('curl "http://app.dreamasik.com/api/insta/gatherPosts/' . $user->id . '"', '* * * * * sleep 20');
                    $user->register_cron('curl "http://app.dreamasik.com/api/insta/gatherPosts/' . $user->id . '"', '* * * * * sleep 30');
                    $user->register_cron('curl "http://app.dreamasik.com/api/insta/gatherPosts/' . $user->id . '"', '* * * * * sleep 40');
                    $user->register_cron('curl "http://app.dreamasik.com/api/insta/gatherPosts/' . $user->id . '"', '* * * * * sleep 50');

注册cron功能:

public function register_cron($url, $period = '* * * * *'){
        $output = shell_exec('crontab -l');
        file_put_contents('/tmp/crontab.txt', $output.$period.' '.$url.PHP_EOL);
        exec('crontab /tmp/crontab.txt');
    }

当它刚刚创建时,它在cron面板中看起来很棒,正如我所提到的那样。邮件立即收集。但现在我发现分钟有一些变化(*成为*/22等):

    */23    *   *   *   *   curl "http://app.dreamasik.com/api/insta/gatherPosts/103"   
    */21    *   *   *   *   sleep 10 curl "http://app.dreamasik.com/api/insta/gatherPosts/103"  
    */24    *   *   *   *   sleep 20 curl "http://app.dreamasik.com/api/insta/gatherPosts/103"  
    */16    *   *   *   *   sleep 30 curl "http://app.dreamasik.com/api/insta/gatherPosts/103"
    */22    *   *   *   *   sleep 40 curl "http://app.dreamasik.com/api/insta/gatherPosts/103"
    */23    *   *   *   *   sleep 50 curl "http://app.dreamasik.com/api/insta/gatherPosts/103"

我删除了所有cron作业,然后再次注册,但问题出现在第二天。

0 个答案:

没有答案