php-resque的安装和使用
Resque 是 Github 基于 Redis 开发的 background job 系统。PHP-Resque 是把 Resque porting 到 PHP 的方案。
redis的安装和运行就不多说,安装后运行就行了。
从github中下载php-redis,https://github.com/chrisboulton/php-resque。加压后进入解压目录。
安装Composer:
apt-get install curl
cd /usr/local/bin
curl -s http://getcomposer.org/installer | php
chmod a+x composer.phar
放置composer.phar到php-resque的安装目录,执行:
php composer.phar install
可能会提示失败,是因为没有安装phpunit,执行如下:
wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
然后也是在php-resque目录中执行php phpunit.phar,应该会成功。
如果都成功的话,就安装好了php-resque了,接下来可以运行demo中的代码。
demo/job.php是一个简单的job:
class PHP_Job
{
// 每个Job都有这个方法,worker就是调用这个方法的。
public function perform()
{
fwrite(STDOUT, 'Start job! -> ');
sleep(1);
fwrite(STDOUT, 'Job ended!' . PHP_EOL);
}
}
demo/queue.php是一个队列插入示例:
<?php
if(empty($argv[1])) {
die('Specify the name of a job to add. e.g, php queue.php PHP_Job');
}
require __DIR__ . '/init.php';
date_default_timezone_set('Asia/Shanghai');
//设置后台存储
Resque::setBackend('127.0.0.1:6379');
// job的参数
$args = array(
'time' => time(),
'array' => array(
'test' => 'test',
),
);
//添加队列和job
$jobId = Resque::enqueue($argv[1], $argv[2], $args, true);
echo "Queued job ".$jobId."\n\n";
命令行输入:
php demo/queue.php default PHP_Job
demo/check_status.php 是检查job的执行情况。
php demo/check_status.php jobid
worker的一个实现:
<?php
date_default_timezone_set('Asia/Shanghai');
require __DIR__.'/../../job.php';
require __DIR__.'/../bin/resque';
这里要require 包含job代码的文件,如果该文件中没有队列中指定的job名的类(定义了perform的类),job将执行失败。
基本就是这样,我简单的记录一下,记忆力不好,怕忘了。