QueueTask

一个轻量级可拓展的队列任务、暂时支持mysql、redis等存储方式

目录结构

|--Config/ 配置文件目录

|--Config.php 配置文件

|--Connection/ 链接(mysql、redis等)目录

|--ConnectAdapter.php   获取链接的工厂类

|--Connection.php   链接类的基类

|--Mysql/ mysql链接目录

|--MySqlConnect.php mysql链接类(继承Connection)

|--Redis/ redis链接目录

|--RedisConnect.php redis链接类(继承Connection)

|--RedisDrive.php redis基础操作类

|... 拓展链接方式,可在此创建目录/文件,继承Connection,在ConnectAdapter注册即可

|--Exception/ 异常目录

|--DBException.php 数据存储相关异常

|--TaskException.php 队列任务执行异常类

|--Handler 处理程序目录(任务真正执行的位置)

|--JobHandler.php 处理程序类基类

|--TestHandler.php (测试文件,可删除)

|... 其他执行类,只需要继承JobHandler,即可使用

|--Helpers 辅助目录

|--StringHelpers.php   字符串帮助类

|--Job 任务目录

|--Job.php 任务基类

|--GeneralJob.php 一般任务类(现在用的任务实体)

|...   可拓展其他任务类,需要继承Job,

|--Queue 队列目录

|--QueueInterface.php 队列接口

|--Queue.php 队列实体

|--MySqlQueue.php MySql队列

|--RedisQueue.php Redis队列

|... 可拓展其他队列,继承Queue,指定存储方式即可

|--Worker 工作目录

|--Worker.php 任务监听类

|--QueueAdapter.php   获取队列的工厂类(获取队列入口)

|--listen.php (测试文件,可删除)

|--index.php (测试文件,可删除)

自动加载

该项目遵守psr-4自动加载规则,使用Composer下载后,引入autoload.php即可自动加载

使用示例

Mysql、Redis存储

/Config/Config.php中方法getStorageType()的返回值指定为STORAGE_MYSQL/STORAGE_REDIS,并且配置好Mysql(getMySqlConfig())/Redis(getRedisConfig())的相关配置

若用Mysql存储,则需要新增job_queue表

用PHP Cli模式运行listen.php,监听mysql任务,(框架中使用则推荐把该段代码放入一个Controller中,然后由PHP Cli模式运行该控制的该方法,这样即可在Handler中使用框架的其他功能、方法)

$queueName = "queueName"; //队列名称

$attempt = 3; //队列任务失败尝试次数,0为不限制

$memory = 128; //允许使用的最大内存 单位:M

$sleep = 1; //每次检测的时间间隔

$delay = 3; //失败后延迟的秒数重新入队列

try{

Worker::listen(QueueAdapter::getQueue(),$queueName,$attempt,$memory,$sleep,$delay);

}catch (Exception $e){

echo $e->getCode()." -- ".$e->getFile() . " -- ". $e->getLine() . " : ".$e->getMessage();

}

执行index.php进行任务入队

$res = QueueAdapter::getQueue();

//$r = $res->pushOn(new TestHandler(),'test',['test'=>'test'],'queueName');     //及时入队

$r = $res->laterOn(5,new TestHandler(),'test',['test'=>'test'],'queueName');   //延迟5s入队

index.php中指定的TestHandler中的test方法被执行

注:listen.php、index.php、TestHandler.php都只是使用示例,可以直接修改,不影响功能

其他存储方式

实现Connection、Queue、在ConnectAdapter、QueueAdapter中注册、增加配置文件参数,即可使用

mysql 队列存储_GitHub - hongliangbest/QueueTask: 一个轻量级可拓展的队列任务、暂时支持mysql、redis等存储方式...相关推荐

  1. mysql nosql sqlite_自己做了一个轻量级的 NoSQL 数据库

    给大家介绍一个个人作品,叫 PoloDB,一个非常轻量级的 NoSQL 数据库,有着类似 MongoDB 的 API,主打几个特性: 轻量级 没有像 MySQL 那样的独立进程,它可以编译成静态库或者 ...

  2. ecs php mysql集成环境_在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境...

    阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在 ...

  3. mysql存储过程更新数据后返回一个字段_史上最全存储引擎、索引使用及SQL优化的实践...

    整个MySQL Server由以下组成 : Connection Pool :连接池组件 Management Services & Utilities :管理服务和工具组件 SQL Inte ...

  4. 鸿蒙harmonyOS 使用轻量级数据存储Preferences出现的一个问题

    鸿蒙harmonyOS 使用轻量级数据存储Preferences出现的一个问题 文章目录 鸿蒙harmonyOS 使用轻量级数据存储Preferences出现的一个问题 前言 一.使用同一个上下文即可 ...

  5. hadoop 依赖式job_每天一学:一个轻量级分布式任务调度框架 XXL-JOB

    概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 官方地址中文版:http://www.xux ...

  6. 处理MySQL数据库出现大量Locked的一个案例[转]

    做为一款轻量级数据库软件,MySQL在使用过程中遇到访问速度慢,或者无法响应这类的问题,解决方式基本都有定式,一般第一反应都会是登录到MySQL, show processlist看看当前连接状态. ...

  7. 再见 MySQL!这可能不再是一个哗众取宠的梗了

    近年来大家可能都有这样一种感受:与编程语言市场不同,数据库市场的竞争激烈异常--一线的在停滞甚至下坠,二线的正在反超. 有种种迹象表明:MySQL 这个流行榜上的榜一大哥,正在逐渐淡出专业开发者的视野 ...

  8. 如何打造一个轻量级的社交系统

    简介 随着国外Facebook.Twitter.国内的微博等社交网络网站的崛起,很多公司也推出了类似的社交服务产品,相比与微博这种大型用户社交产品而言,很多公司包括育学园推出的类微博Feed流的社交产 ...

  9. 我用Redis实现了一个轻量级的搜索引擎!

    作者:jasonGeng88 出处:https://github.com/jasonGeng88/blog 大家如果是做后端开发的,想必都实现过列表查询的接口,当然有的查询条件很简单,一条 SQL 就 ...

最新文章

  1. Ubuntu 14.04更新为国内阿里源解决apt-get install无法执行的问题
  2. JS判断GridView中复选框有没有被选中
  3. elasticsearch 通过curl的操作
  4. javascript学习笔记(一)-廖雪峰教程
  5. Python编程从入门到实践~文件写入
  6. 士林变频器面板如何调速度_必读干货丨西威变频器DRIVE OVERLOAD故障处理
  7. php time()的用法,PHP timezone_name_from_abbr() 函数用法及示例
  8. Java 版本中文数字转阿拉伯数字实现
  9. android线控耳机开发,Typec转3.5mm耳机方案带线控SSS1530设计开发(原理图+PCB电路)...
  10. 图像分割之(四)OpenCV的GrabCut函数使用和源码解读
  11. 第二类曲面积分转化为二重积分
  12. 软件项目管理第一章---项目管理概念
  13. MATLAB模糊数据工具箱的使用
  14. 如何用HTML5开发一款手机游戏
  15. MySQL制定启动配置文件_mysql指定配置文件启动
  16. mysql sql 工资加密_MYSQL 加密SQL
  17. 在线RSA加密解密,RSA2加密解密(SHA256WithRSA)
  18. 91.video.ws index php_如何利用videojs实现视频列表循环播放(完整代码)
  19. 【开源电机驱动】如何整定PID的参数
  20. leetcode 203. 移除链表元素

热门文章

  1. BZOJ 1013 球形空间产生器(高斯消元)
  2. 如何在乌版图系统添加拼音输入法!
  3. Java的clone方法
  4. 关于批量导入数据以及调优的一些总结
  5. 我国第二套人民币纸分币明天起停止流通
  6. Hasura GraphQL 内部表结构
  7. Android DataBinding 从入门到进阶
  8. 0代码隐藏GroupedTableView上边多余的间隔
  9. python---io模式详解(适合零基础)
  10. Matlab中diag函数注意事项