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. 6.requests编写企查查爬虫

    (为编写完善能拿下来数据) 企查查代码数据如下: #encoding:utf-8 import requests from lxml import etree import random import ...

  2. 用google-code-prettify高亮代码

    示例: https://code.google.com/p/google-code-prettify/wiki/GettingStarted 主题如何使用google-code-prettify高亮代 ...

  3. FireDAC FDQuery

    http://docwiki.embarcadero.com/RADStudio/XE6/en/TFDMemTable_Questions#Q:_How_can_I_copy_all_records_ ...

  4. as3 air 保存文本内容的换行

    private function newData() { var str:String="<root>"; for(var i in charCode_arr) { s ...

  5. 10 并发编程-(线程)-GIL全局解释器锁&死锁与递归锁

    一.GIL全局解释器锁 1.引子 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势 首先需要明确的一点是GIL并不是Python的特性,它是在实现Pyt ...

  6. 主流JS库一览

    主流JS库一览 标签: prototypedojomootoolsprototypejsjqueryjavascript 2009-10-14 22:52 19936人阅读 评论(2) 收藏 举报   ...

  7. Haskell语言学习笔记(27)Endo, Dual, Foldable

    Endo Monoid newtype Endo a = Endo { appEndo :: a -> a } instance Monoid (Endo a) where mempty = E ...

  8. gerp , sed , awk

    gerp 查找, sed 编辑, awk 根据内容分析并处理. awk(关键字:分析&处理) 一行一行的分析处理 awk '条件类型1{动作1}条件类型2{动作2}' filename, aw ...

  9. ant使用备忘

    ant是一个脚本构建工具,可能就是持续集成里面所需要的构建工具. 如果使用eclipse,里面会自带有ant工具,不需要再安装了,创建一个build.xml(或者其他的名字都可以),使用ant来运行就 ...

  10. 使用 ImageEnView 给图片加水印,及建缩略图

    摘要: 使用 ImageEnView 给图片加水印,及建缩略图 {Power by hzqghost@21cn.com}unit CutWater; interface uses  Math,imag ...