zoukankan      html  css  js  c++  java
  • Laravel 6.0 Schedule Preventing Task Overlaps 测试

    1 目的

    1.1 测试 Laravel 6.0 任务执行机制

    2 意义

    2.1 在日常开发中,有的任务比较复杂,在两次任务的调度周期间隔中无法完成。

    2.2 为了防止重复任务的持续生成和反复调用,对服务器性能造成无谓消耗。

    2.3 探索 $schedule->withoutOverlapping() 方法,如何阻断重复任务的调用

    3 实验过程

    3.1 不加 withoutOverlapping ()

    3.1.1 Kernel

    protected function schedule(Schedule $schedule)
    {
    // $schedule->command('inspire')
    // ->hourly();
    $schedule->job(new SyncAttach())
    ->everyMinute();

    }
    3.1.2 结果

    [2019-10-10 10:59:02] local.INFO: SyncAttach f1951114-6e57-46aa-b037-2e8761c094a4 start
    [2019-10-10 11:00:02] local.INFO: SyncAttach 087c5cb1-aaa9-4b3d-a69d-f2be196105ee start
    [2019-10-10 11:01:02] local.INFO: SyncAttach f1951114-6e57-46aa-b037-2e8761c094a4 end
    [2019-10-10 11:01:02] local.INFO: SyncAttach 6a80b5f2-39be-4676-91fd-5bd160a7afc0 start

    3.1.3 分析

    每一分钟都会生成一个 JOB,而不管上一个 JOB 是否完成。

    3.2 加入 withoutOverlapping()

    3.2.1 Kernel

    protected function schedule(Schedule $schedule)
    {
    // $schedule->command('inspire')
    // ->hourly();
    $schedule->job(new SyncAttach())
    ->everyMinute()
    ->withoutOverlapping();

    }
    3.2.2 结果

    [2019-10-10 11:05:02] local.INFO: SyncAttach d56a32c5-5ca1-47c8-8d96-81a397211276 start
    [2019-10-10 11:07:02] local.INFO: SyncAttach d56a32c5-5ca1-47c8-8d96-81a397211276 end
    [2019-10-10 11:07:02] local.INFO: SyncAttach 6d4480c1-9da5-48dd-abdb-46b315a19f2a start
    [2019-10-10 11:09:02] local.INFO: SyncAttach 6d4480c1-9da5-48dd-abdb-46b315a19f2a end

    3.2.3 分析

    第6、8分钟并没有生成 Job,是因为上次的 Job 没有完成。

    3.3 结论

    3.3.1 加上 withoutOverlapping(),可以防止任务调用重复,只有旧的任务完成,新的任务才会产生

    3.3.2 用 $schedule->call() 闭包方式执行任务,不可加入 withoutOverlapping(),报错:[2019-10-10 10:51:02] local.ERROR: A scheduled event name is required to prevent overlapping. Use the 'name' method before 'withoutOverlapping'.

  • 相关阅读:
    【响应式Web设计实践 #BOOK#】
    【JS】(+﹏+)~
    -_-#【邮件】qq邮箱不显示图片
    -_-#【Markdown】
    51Nod——N1284 2 3 5 7的倍数
    51Nod——N1118 机器人走方格
    洛谷——P1014 Cantor表
    洛谷—— P1434 滑雪
    洛谷——P1443 马的遍历
    python(24)- 面向对象进阶
  • 原文地址:https://www.cnblogs.com/mouseleo/p/11646398.html
Copyright © 2011-2022 走看看