mysql 队列存储_GitHub - hongliangbest/QueueTask: 一个轻量级可拓展的队列任务、暂时支持mysql、redis等存储方式...
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等存储方式...相关推荐
- mysql nosql sqlite_自己做了一个轻量级的 NoSQL 数据库
给大家介绍一个个人作品,叫 PoloDB,一个非常轻量级的 NoSQL 数据库,有着类似 MongoDB 的 API,主打几个特性: 轻量级 没有像 MySQL 那样的独立进程,它可以编译成静态库或者 ...
- ecs php mysql集成环境_在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境...
阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在 ...
- mysql存储过程更新数据后返回一个字段_史上最全存储引擎、索引使用及SQL优化的实践...
整个MySQL Server由以下组成 : Connection Pool :连接池组件 Management Services & Utilities :管理服务和工具组件 SQL Inte ...
- 鸿蒙harmonyOS 使用轻量级数据存储Preferences出现的一个问题
鸿蒙harmonyOS 使用轻量级数据存储Preferences出现的一个问题 文章目录 鸿蒙harmonyOS 使用轻量级数据存储Preferences出现的一个问题 前言 一.使用同一个上下文即可 ...
- hadoop 依赖式job_每天一学:一个轻量级分布式任务调度框架 XXL-JOB
概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 官方地址中文版:http://www.xux ...
- 处理MySQL数据库出现大量Locked的一个案例[转]
做为一款轻量级数据库软件,MySQL在使用过程中遇到访问速度慢,或者无法响应这类的问题,解决方式基本都有定式,一般第一反应都会是登录到MySQL, show processlist看看当前连接状态. ...
- 再见 MySQL!这可能不再是一个哗众取宠的梗了
近年来大家可能都有这样一种感受:与编程语言市场不同,数据库市场的竞争激烈异常--一线的在停滞甚至下坠,二线的正在反超. 有种种迹象表明:MySQL 这个流行榜上的榜一大哥,正在逐渐淡出专业开发者的视野 ...
- 如何打造一个轻量级的社交系统
简介 随着国外Facebook.Twitter.国内的微博等社交网络网站的崛起,很多公司也推出了类似的社交服务产品,相比与微博这种大型用户社交产品而言,很多公司包括育学园推出的类微博Feed流的社交产 ...
- 我用Redis实现了一个轻量级的搜索引擎!
作者:jasonGeng88 出处:https://github.com/jasonGeng88/blog 大家如果是做后端开发的,想必都实现过列表查询的接口,当然有的查询条件很简单,一条 SQL 就 ...
最新文章
- Ubuntu 14.04更新为国内阿里源解决apt-get install无法执行的问题
- JS判断GridView中复选框有没有被选中
- elasticsearch 通过curl的操作
- javascript学习笔记(一)-廖雪峰教程
- Python编程从入门到实践~文件写入
- 士林变频器面板如何调速度_必读干货丨西威变频器DRIVE OVERLOAD故障处理
- php time()的用法,PHP timezone_name_from_abbr() 函数用法及示例
- Java 版本中文数字转阿拉伯数字实现
- android线控耳机开发,Typec转3.5mm耳机方案带线控SSS1530设计开发(原理图+PCB电路)...
- 图像分割之(四)OpenCV的GrabCut函数使用和源码解读
- 第二类曲面积分转化为二重积分
- 软件项目管理第一章---项目管理概念
- MATLAB模糊数据工具箱的使用
- 如何用HTML5开发一款手机游戏
- MySQL制定启动配置文件_mysql指定配置文件启动
- mysql sql 工资加密_MYSQL 加密SQL
- 在线RSA加密解密,RSA2加密解密(SHA256WithRSA)
- 91.video.ws index php_如何利用videojs实现视频列表循环播放(完整代码)
- 【开源电机驱动】如何整定PID的参数
- leetcode 203. 移除链表元素