1 前言

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

2 任务分类

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

2.1 实时任务

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

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

2.2 异步任务

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

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

2.3 周期性任务

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

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

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

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

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

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

另一种情况:

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

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

4 Laravel 对 Cron 和 Job 的支持

待续 ...

Laravel 根据任务的性质和要求决定处理的方式(Cron or Job)的更多相关文章

  1. Laravel 5.x 请求的生命周期(附源码)

    Laravel最早接触是刚开始实习的时候,那时通过网上的学习资料很快便上手,开发模块接口.后来没有什么深入和总结,但是当我刚开始学Laravel的时候,我对Laravel最大的认识就是,框架除了路由. ...

  2. Laravel学习笔记(三)数据库 数据库迁移

    该章节内容翻译自<Database Migration using Laravel>,一切版权为原作者. 原作者:Stable Host, LLC 翻译作者:Bowen Huang 正文: ...

  3. Laravel 5.1使用命令行模式(artisan)运行php脚本

    Laravel有内置命令调度器,可以方便的实现Cron. 任务调度定义在app/Console/Kernel.php文件的schedule方法中,该方法已经包含了一个示例.Laravel里有两种方法执 ...

  4. 使用laravel的任务调度(定时执行任务)

    laravel中有一个很强大上的功能,只需要在服务器上添加一个cron条目,就可以定时执行所有的laravel任务. 现在有如下数据表: 我想让cron表中的cron字段的值每分钟增加1,那么我需要如 ...

  5. laravel框架中所用到的依赖注入

    用Laravel开发前前后后有2个月左右了,之前一直写Java,就像找到Java和PHP之前的共同点,用Java的某些原理去理解PHP会发现还是有很多共通之处的.Java的依赖注入已经是一个很常见的概 ...

  6. 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的

    在阿里云买ECS的时候选择自己习惯的镜像系统,我一般都是使用Linux Ubuntu,所以,以下的配置都是在Ubuntu 14.04稳定支持版的环境中搭建Linux+Nginx+Mysql+PHP环境 ...

  7. 从零开始部署一个 Laravel 站点

    从零开始部署一个 Laravel 站点 此文章为原创文章,未经同意,禁止转载. PHP Laravel Web Git 在阿里云买ECS的时候选择自己习惯的镜像系统,我一般都是使用Linux Ubun ...

  8. Laravel核心之IOC和Facade 架构分析1

    控制反转(Inversion of Control) 缩写为IoC 最常见的方式叫做依赖注入 简单说来,就是一个类把自己的的控制权交给另外一个对象,类间的依赖由这个对象去解决. Laravel 中的使 ...

  9. 推荐几个Laravel 后台管理系统

    小编推荐几个Laravel 后台管理系统 由百牛信息技术bainiu.ltd整理发布于博客园 一.不容错过的Laravel后台管理扩展包 —— Voyager 简介Voyager是一个你不容错过的La ...

随机推荐

  1. MPI Hello World

    ▶<并行程序设计导论>第三章(用 MPI 进行分布式内存编程)的第一个程序样例. ●  代码 #include <stdio.h> #include <string.h& ...

  2. Mysql replace into

    mysqlsql serverinsert 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新. 在 SQL Server 中可以 ...

  3. openx _金额

    1/work/openx/lib/max/Delivery/log.php MAX_Delivery_log_logAdImpression    MAX_Delivery_log_logAdRequ ...

  4. sqlserver主从复制

    参考网站: http://www.178linux.com/9079 https://www.cnblogs.com/tatsuya/p/5025583.html windows系统环境进行主从复制操 ...

  5. hive 下篇

    由于spark on hive 问题,导致无法插入数据,暂时使用spark进行hive操作 向分区表插入数据 hive> show partitions customers;OKpartitio ...

  6. C# WEB.API 接收并解析保存base64格式的图片

    using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System. ...

  7. Android手机与服务器(案例一) webservice

    1.服务端 建立webservice,增加方法gettime和sum. 测试正常8080端口,关闭防火墙. Start启动服务,并且OpenBrowser,XE6真是方便啊 http://localh ...

  8. web.xml 组件加载顺序

    <web-app>     <display-name></display-name> WEB应用的名字 <description></descr ...

  9. Fiddler 链接到逍遥安卓模拟器

    参考:  http://www.xyaz.cn/thread-4664-1-1.html 1丶启动Fiddler,打开菜单栏中的 工具 >Fiddler选项 ,打开“Fiddler选项”对话框. ...

  10. Java常见的乱码解决方式

    JAVA几种常见的编码格式(转)   简介 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多.本文将向你详细介绍 Java 中编码 ...