Login
网站首页 > 文章中心 > 其它

Redis+php-resque实现消息队列

作者:小编 更新时间:2023-08-12 14:37:46 浏览量:497人看过

服务器硬件配置

软件环境

第一段:Redis安装

1. 获取源码

2. 编译、安装

Redis+php-resque实现消息队列-图1

#make

③ 配置Redis

daemonize= yes

④ 启动Redis

⑤ 测试连接

#src/redis-cli

Redis+php-resque实现消息队列-图2

set foo bar

OK

get foo

"bar"

exit;

第二段:phpredis?安装

1. 获取源码

#cd /usr/local/src

2. 编译、安装

#/usr/local/php/bin/phpize

#./configure –-with-php-config=/usr/local/php/bin/php-config

# make make install

③ 配置php.ini

Redis+php-resque实现消息队列-图3

#vi/usr/local/php/etc/php.ini

extension=redis.so

④ 重启nginx php-fpm

第三段:php-resque安装

*准备工作

需要pcntl支持

安装git

#yum -y install git

安装Composer

#cd/usr/local/bin

# curl–sS https://getcomposer.org/installer| php

# mv composer.phpar/usr/local/bin/composer

修改 php.ini

disable_functions = ... ...

将proc_open和proc_get_status以及exec删除

保存后,重启LNMP

1. 获取源码

#cd /home/wwwroot/default

# gitclone git://github.com/chrisboulton/php-resque.git

2. 安装

#cd php-resque

# composer install

第四段:Demo

1. 一个Job

Job|任务:一个Job就是一个需要在后台完成的任务,比如邮件发送,就可以抽象为一个Job.在Resque中一个Job就是一个Class.

# cd php-resque

# vimdemo/job.php

class PHP_Job

{

public function perform()

sleep(10);

}

',然后等待10秒钟后,再次输出'Job ended!'.

在Resque的设计中,一个Job必须存在一个perform方法,Worker则会自动运行这个方法.

2. 将Job插入队列

Queue|队列:就是标题中的消息队列.在Resque中,队列由Redis来负责实现.Resque还提供了一个简单的队列管理器,可以实现将Job插入/取出队列等功能.

#vimdemo/queue.php

//在cli命令行中运行queue.php 后面必须加上两个参数,第一个参数为queue的名称 第二个参数为job的名称,必须同之前编写的Job类的类名.

$args = array(

),

);

在cli方式中运行:

#phpdemo/queue.php default PHP_Job

结果可以在屏幕上看到输出:

即Job添加入队列成功.

③ 查看Job运行情况

php-resque同样提供了查看Job运行状态的例子,直接运行:

可以看到输出:

Resque_Job_Status::STATUS_WAITING = 1; (等待)

由于没有运行Worker,所以刚才创建的Job还是等待状态.

④ 运行Worker

#vim demo/resque.php

可以看到一个Worker至少需要两部分:

①可以直接包含Job类文件,也可以使用php的自动加载机制,指定好Job Class所在路径并能实现自动加载.

在cli方式下运行:

#QUEUE=defaultphp demo/resque.php

前面的QUEUE部分是设置的环境变量,我们指定当前的Worker只负责处理default队列.也可以使用

#QUEUE=* phpdemo/resque.php

来处理所有的队列.

运行后,可以看到输出:

Job ended!? //Job的运行结果

使用ps指令检查一下:

# ps aux | grepresque

可以看到有一个php的守护进程已经在运行了

任务运行完毕后,同时屏幕可以看到输出结果!

至此利用Redis + php-resque实现消息队列的演示全部完成.

⑤ 参考资料

http://avnpc.com/pages/run-background-task-by-php-resque

以上就是土嘎嘎小编为大家整理的Redis+php-resque实现消息队列相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章