对此问题的任何帮助都将非常感激。
我在特定时间运行了15个基于时间的任务。重要的是,他们在这些时间运行,因为他们根据运行的第一个cron任务构建数据。这是一个例子:
$schedule->command( 'task:build one' )->cron( '2/5 * * * *' );
$schedule->command( 'task:build two' )->cron( '3/15 * * * *' );
$schedule->command( 'task:build three' )->cron( '3 * * * *' );
$schedule->command( 'task:build four' )->cron( '4 */12 * * *' );
...
使用任务:以两个为例,问题如下:
任务:两个使用任务生成的数据库中的结果:一个并存储到另一个表。任务使用的表:一个只是由其他任务读取并且从未写入。所以:
任务:运行一次,不到一分钟。 任务:两分钟后开始。
在极少数情况下(可能每周最多8次,似乎是随机的)任务:两个延迟这么长的任务:一个设法再次运行(5分钟后)并在其表中添加一个额外的行,所以通过时间任务:两个人获得的数据超出了它的需要。
到目前为止我自己的研究:
没有sql死锁问题,因为每个任务只写入一个特定于自身的表,我看不到任何mysql错误日志。
数据库约为。 5GIG,在便宜的20美元数字海洋服务器上运行。
从15项任务来看,似乎有些任务比其他任务更有效,有些任务似乎从未受到影响。
我不是开发人员,我正在尝试确定这是否是Laravel问题,可能是由于我的执行不当或服务器问题。
我希望能很好地描述这个问题以获得帮助,但如果没有,请告诉我您需要哪些额外信息。
答案 0 :(得分:0)
您可以使用名为task overlap using命令的laravel功能
$schedule->command('emails:send')->withoutOverlapping(10);
要了解更多信息,请点击https://laravel.com/docs/5.5/scheduling#preventing-task-overlaps链接