服务器硬件配置
软件环境
#make
daemonize= yes
#src/redis-cli
set foo bar
OK
get foo
"bar"
exit;
#cd /usr/local/src
#/usr/local/php/bin/phpize
#./configure –-with-php-config=/usr/local/php/bin/php-config
# make make install
#vi/usr/local/php/etc/php.ini
extension=redis.so
*准备工作
需要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
#cd /home/wwwroot/default
# gitclone git://github.com/chrisboulton/php-resque.git
#cd php-resque
# composer install
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则会自动运行这个方法.
Queue|队列:就是标题中的消息队列.在Resque中,队列由Redis来负责实现.Resque还提供了一个简单的队列管理器,可以实现将Job插入/取出队列等功能.
#vimdemo/queue.php
//在cli命令行中运行queue.php 后面必须加上两个参数,第一个参数为queue的名称 第二个参数为job的名称,必须同之前编写的Job类的类名.
$args = array(
),
);
在cli方式中运行:
#phpdemo/queue.php default PHP_Job
结果可以在屏幕上看到输出:
即Job添加入队列成功.
php-resque同样提供了查看Job运行状态的例子,直接运行:
可以看到输出:
Resque_Job_Status::STATUS_WAITING = 1; (等待)
由于没有运行Worker,所以刚才创建的Job还是等待状态.
#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实现消息队列相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!