Php 如何以亚分钟的频率实现Artisan/cron操作?

Php 如何以亚分钟的频率实现Artisan/cron操作?,php,laravel,cron,scheduling,frequency,Php,Laravel,Cron,Scheduling,Frequency,您好,我知道Artisan调度程序是由cron调用的,crontab中的最小频率是“everyminute” 如何获得更高的频率? 我可以通过软件(PHP)实现它:就像脚本每分钟都被调用一样,但是脚本本身会计时其他子操作? 或者更好的是,我可以通过bash脚本实现它(可能总是通过cron调用……但会在每分钟内管理多个调用,进程监视/垃圾收集) 我打赌已经有一些东西实现了频率高于60”的服务器端例程。 您知道任何真正的工作示例/实现可以实现我问题的要点吗 谢谢这假设操作不是密集型的,它们不会占用任

您好,我知道Artisan调度程序是由cron调用的,crontab中的最小频率是“everyminute”

如何获得更高的频率? 我可以通过软件(PHP)实现它:就像脚本每分钟都被调用一样,但是脚本本身会计时其他子操作? 或者更好的是,我可以通过bash脚本实现它(可能总是通过cron调用……但会在每分钟内管理多个调用,进程监视/垃圾收集)

我打赌已经有一些东西实现了频率高于60”的服务器端例程。 您知道任何真正的工作示例/实现可以实现我问题的要点吗


谢谢

这假设操作不是密集型的,它们不会占用任何实际时间,否则您的cron作业会重叠,您会讨厌自己

$times_per_minute = 10;
for($i=0; $i<$times_per_minute; $i++) {
    do_my_awesome_function();
    sleep(60/$times_per_minute);
}
$times\u/u分钟=10;

对于($i=0;$i为什么你不去问你面临的真正问题,而不是你在这里写的东西?没有代码或实质性的问题,我们可以只是提出意见和猜测——这不是你解决真正问题所需要的。是的,也许这个问题留下了太多的解释……我认为我实际上不需要意见,而是需要经验对于一个工作示例,没有性能缺陷…我喜欢实现守护进程的想法,你会怎么做?(在PHP/laravel风格中:-)是的,这是我在说“我可以通过软件(PHP)实现它”时想到的基本解决方案,但我确信它可能会变得奇怪,令人惊叹的速度不一定如此之快…总是:)是的,如果你需要某个每分钟运行20-30次以上的程序,你就需要PHP或cron以外的其他程序。像NodeJS或Java这样的事件驱动程序可以更好地处理这个问题。我添加了一些检查,你可以包括这些检查,以减少冲突的可能性。是的,我同意你的看法。谢谢
 $start_time = time(); 
 $times_per_minute = 10;
 for($i=0; $i<$times_per_minute; $i++) {
        do_my_awesome_function();
        $actual_runtime = time() - $start_time;
        $predicted_runtime = $i * (60/$times_per_minute);
        $offset_time = $predicted_runtime - $actual_runtime;
        sleep((60 - $offset_time)/$times_per_minute);
 }
 $start_time = time(); 
 $times_per_minute = 10;
 for($i=0; $i<$times_per_minute; $i++) {
        if($i > 0) {
            $average_run_time = (time() - $start_time) / $i
            if(time() - $start_time + $average_run_time > 60) {
                break;
            }
        }
        do_my_awesome_function();
        $actual_runtime = time() - $start_time;
        $predicted_runtime = $i * (60/$times_per_minute);
        $offset_time = $predicted_runtime - $actual_runtime;
        sleep((60 - $offset_time)/$times_per_minute);
 }