• Laravel 根据任务的性质和要求决定处理的方式(Cron or Job)


    1 前言

    一般地,我们在应用的开发中,会碰到各种各样的任务解决需求。我的原则是,选择合适的方法做正确的事。

    2 任务分类

    在开发中, 一般会有以下几种性质的任务。

    2.1 实时任务

    一般是指,任务间的关系较为紧密,甚至互为前置与后置的关系。

    对于这种任务,按正常开发模式开发就好。应确保方法的单一职责,要具有排他性。如果一个方法的名称怎么起都不合适,或许我们就违反了此原则。

    2.2 异步任务

    作务前后关系耦合性不强,实时性要求不高,允许稍后实现。我们可以把它看作异步任务。

    如:拼音码的生成、附件格式的转换、相关字段的统计和计算、子任务的自动同步生成等。

    2.3 周期性任务

    某些任务需要周期性进行处理,以确保数据的时效性,我们可以看作周期性任务。

    如:年龄计算、保质期、有效期、考试时间范围等。

    3 基于用户体验的开发取舍

    没有一个人愿意发生以下的事情,包括你自己。

    • 点击一个按钮,半天出不来结果,总在提示耐心等待
    • 年龄并不随着系统时间的推移自动更新,总要求我去刷新一下

    所以,开发要以用户的体验为出发点和归集点。想办法去提升 Web 响应的性能。按任务的性质,该进 cron 就进 cron,该进 job 就进 job!

    另一种情况:

    实时性要求比较高。比如,考试系统。在用户提交一道答题结果时,要求立即看到进度和正确率的信息。

    这种情况下,要果断放弃 job 方式,采用实时计算。

    4 Laravel 对 Cron 和 Job 的支持

    待续 ...

  • 相关阅读:
    【从零开始学Spring笔记】Spring的JDBC模板的使用
    自定义实现HashMap的put、get方法
    ArrayList和LinkedList在中间开始插入的快慢比较
    intellij IDEA导入java源码
    IntelliJ IDEA 创建Spring+SpringMVC+hibernate+maven项目
    IntelliJ IDEA 创建maven管理的webapp项目
    IntelliJ IDEA 创建Spring+SpringMVC+mybatis+maven项目
    线程--实现Runnable接口
    线程--继承Thread
    比较两个List是否相等,长度和内容都相等
  • 原文地址:https://www.cnblogs.com/mouseleo/p/9298259.html
Copyright © 2020-2023  润新知