resque java_php-resque :基于Redis的后台任务系统

为什么使用php-resque?

php-resque 是轻量级后台任务系统,基于Redis,功能设计简单,配置灵活。相比MQ系统大而全的MQ系统,这个显得小而美。

php-resque 角色划分

Job 定义任务,是负责具体的业务逻辑。

Queue 队列,负责Job存/取

Worker 从Queue中取Job来执行。 一般为PHP CLI模式下,后台守护方式运行。

使用

install

如果下载慢, 可以配置 composer 国内镜像

composer config -g repo.packagist composer https://packagist.phpcomposer.com

安装php-resque

旧版

Composer:This package is abandoned and no longer maintained. The author suggests using the resque/php-resque package instead.

composer require "chrisboulton/php-resque 1.2"

更新为新的扩展包:resque/php-resque

composer require resque/php-resque

编写Job

DemoJob.php

class DemoJob

{

public function perform()

{

// Work work work

//echo $this->args['name'];

}

}

入队列操作

Resque::setBackend('localhost:6379');

$args = array(

'name' => 'hanmeimei',

);

Resque::enqueue('default', DemoJob::class, $args);

Worker代码

resque-worker.php

$redis_dsn = '127.0.0.1:6379';

putenv("REDIS_BACKEND=$redis_dsn");

// 引入队列的入口程序

$resque = realpath(dirname(__FILE__) . '/vendor/chrisboulton/php-resque/resque.php');

require_once $resque;

启动worker

php-resque 的环境变量有:

QUEUE – 这个是必要的,会决定 worker 要执行什么任务,重要的在前,例如 QUEUE=notify,mail,log 。也可以设定為 QUEUE=* 表示执行所有任务。

APP_INCLUDE – 可选,加载文件用的。可以设成 APP_INCLUDE=require.php ,在 require.php 中引入所有 Job 的 Class即可。

COUNT – 设定 worker 数量,预设是1 COUNT=5 。

REDIS_BACKEND – 设定 Redis 的 ip, port。如果没设定,预设是连 localhost:6379 。

LOGGING, VERBOSE – 设定 log, VERBOSE=1 即可。

VVERBOSE – 比较详细的 log, VVERBOSE=1 debug 的时候可以开出来看。

INTERVAL – worker 检查 queue 的间隔,预设是五秒 INTERVAL=5 。

PIDFILE – 如果你是开单 worker,可以指定 PIDFILE 把 pid 写入,例如 PIDFILE=/var/run/resque.pid 。

BACKGROUND 可以把 resque 丢到背景执行。或者使用 php resque.php &就可以了。

示例

QUEUE=counter php resque-worker.php

至此,php-resque的安装和使用已经完毕。

后面的章节是工具插件, 仅供参考。

界面 resque-web

监控 PHP-Resque 的运行状况

安装

gem install resque-web -v 0.0.8

运行

resque-web -p 40000

监控 supervisor

启动服务

/usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf

监控项目配置

/etc/supervisor/conf.d/lumen_resque.conf

[program:worker_lumen_resque]

directory=/home/wwwroot/mysite

command=php resque-worker.php

environment=QUEUE='default'

优点:

可以配置 程序异常退出后自动重启

制定程序运行用户

可以设置进程数

自动重启

supervisord启动后,自动启动脚本

分组管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【.NET 日常开发技巧】一个性能强悍的HttpClient 库

微信公众号:趣编程ACE关注可了解更多的.NET日常实战开发技巧,如需源码请公众号留言源码即可;源码如下:1// See https://aka.ms/new-console-template for more information2using Flurl;3using Flurl.Http;45Console.WriteLine("Hello, …

javascript中Date对象的初始化方法

为什么80%的码农都做不了架构师?>>> 在前端代码中难免会涉及到时间的操作,如何构造一个Date对象呢?javascript为我们提供如下几种方式: new Date("month dd,yyyy hh:mm:ss");new Date("month dd,yyyy&…

【转】R语言 RStudio快捷键

【转】R语言 RStudio快捷键 链接地址 http://blog.sina.com.cn/s/blog_403aa80a0101ar8q.html 控制台 功能Windows & LinuxMac移动鼠标到控制台Ctrl2Ctrl2控制台清屏CtrlLCommandL移动鼠标至第一行HomeCommandLeft移动鼠标至最后一行EndCommandRight历史记录翻滚Up/DownUp…

贪心算法之哈夫曼编码问题

1、问题 通常的编码方法有固定长度编码和不等长度编码两种。这是一个设计最优编码方案的问 题,目的是使总码长度最短。这个问题利用字符的使用频率来编码,是不等长编码方法,使 得经常使用的字符编码较短,不常使用的字符编码较长。如果采用等长的编码方案,假设所 有字符的编码都…

决心书

决心书 我是来自山西的一只老山羊,我叫杨洋。从大学毕业后,从事教育行业,也回山西老家坐过一段办公室。每天除了发呆一无是处,总觉得自己需要改变着什么。虽然做不到为天地立心,为众生立命。能为自己立命也是好的。所以…

java id主键_JAVA主键ID生成工具类:改自twitter的分布式ID算法snowflake

祝大家新年快乐,有任何问题可与我联系:关于snowflake算法的介绍和原理这里不过多说明了,网上有很多。这里简单描述下SnowflakeUtil的优点:1、做为底层工具使用,可用于数据库主键、订单编号……2、不依赖数据库&#xf…

云上“炼”码兵器 GitHub Codespaces

GitHub 是全球最受欢迎的开发者平台, ⾃从微软收购了 GitHub 后, GitHub 的功能就越来越强⼤,除了原有的代码管理外,也增加了很多硬货,这就包括了集成 CI/CD 的 GitHub Actions ,以及完善的项⽬管理功能&am…

python 中的yum pip

为什么80%的码农都做不了架构师?>>> python 中的yum pip pip 可以管理python中的模块,之于python就像yum之于redhat 转载于:https://my.oschina.net/sskxyz/blog/368099

Hello, AnnsShadow!

Hello! 发现这个神奇的园子快一年了,自己的学习历程磕磕碰碰也过了一年了,想想,这么久了,是时候做些记录做个分享者了。 从一开始的只敢看Blog,到现在自己发表一下自己的所感所想,算是一种成长了…

ArcGIS怎样获取重分类后各类所占的像元个数

【问题描述】如下图所示,给西北地区2007年平均NDVI分等级,求各个等级的面积所占百分比? 解决方法: 刚开始老在如下图所示的Properties界面中进行重分类,虽然能得到分类结果,但是却得不到像元个数,因为是连续的,也不会有属性表生成: 后来发现,工具箱中还有个分类工具…

Linux c之函数手册

Linux c函数手册查阅地址 http://man.chinaunix.net/develop/c&c/linux_c/default.htm

13.ThreadPoolExecutor线程池之submit方法

jdk1.7.0_79 在上一篇《ThreadPoolExecutor线程池原理及其execute方法》中提到了线程池ThreadPoolExecutor的原理以及它的execute方法。本文解析ThreadPoolExecutor#submit。 对于一个任务的执行有时我们不需要它返回结果,但是有我们需要它的返回执行结果。对于线程…

java idea 模块_idea 多模块项目依赖父工程class找不到问题的方法

比如,我们有这么个过程,项目结构如下:a--b--ca是总结点,b是子节点,c是父节点b依赖父节点class,通过maven构建时通常我们会在子节点中添加父节点依赖,如:com.xxxc${project.version}虽…

关于OAuth2.0 Authorization Code+PKCE flow在原生客户端(Native App)下集成的思考

Working with Proof Key for Code Exchange (PKCE) - DEV Community写在前面前几天看了园友的一篇文章被广泛使用的OAuth2.0的密码模式已经废了,放弃吧 被再次提起:Implicit Flow Password Grant,均已被标记为Legacy,且OAuth2.1里…

详细类库排行榜网址

https://github.com/search?lObjective-C&qstars%3A%3E1&refsearchresults&typeRepositories 转载于:https://www.cnblogs.com/hsxblog/p/4953572.html

贪心算法之用优先队列(priority_queue)实现哈夫曼编码问题

1、问题 参考我的博客:贪心算法之哈夫曼编码问题 2、优先队列知识复习 参考我的博客: C++之STL之priority_queue 3、代码实现 #include <iostream> #include <queue>using namespace std;//最大字符编码数组长度 #define MAXCODELEN 100 //最大哈夫曼节点结…

【经典回放】多种语言系列数据结构算法:希尔排序(C/C#版)

原理&#xff1a;每隔sp&#xff08;整数&#xff09;个数即取数并判断大小&#xff0c;交换&#xff0c;先构造局部有序序列&#xff0c;直到sp为1&#xff0c;构造完整的有序序列。 给出一组数据&#xff0c;如下&#xff1a; 0 1 2 3 4 5 6 7 8 9 49 38 65 97 …

extjs 文件加载、解析流程

extjs版本&#xff1a;4.2.1在html中添加应用的启动脚本&#xff0c;如下&#xff1a;<script src"app.js"></script>2. 用户访问html的时候&#xff0c;会去加载app.js文件&#xff0c;app中定义了应用的名字&#xff0c;根路径等信息&#xff0c;并且调…

【131天】尚学堂高淇Java300集视频精华笔记(65-66)

第65集&#xff1a;常用类Date类的使用JDk源码分析 Date时间类&#xff08;java.util.Date&#xff09; 在标准Java类库中包含一个Date类。它的对象表示一个特定的瞬间&#xff0c;精确到毫秒。 Date()分配一个Date对象&#xff0c;并初始化此对象为当前的日期和时间精确到毫秒…

ArcGIS 10.2加载在线影像底图

两种方法&#xff1a; 一、File→ArcGIS Online→影像图→Open。 二、 效果&#xff1a;