PHP-Resque(转载)

Resque 是 Github 基於 Redis 開發的 background job 系統。相較其他肥大的 queue 系統, Resque 的設計真的非常單純簡潔,充分利用 Redis 的特性。更多介紹可以看原作者的 Blog
PHP-Resque 是把 Resque porting 到 PHP 的專案。使用和 原本 Resque 一樣的概念和設計。甚至連 Redis 的 key 命名都一樣,因此也可以使用 Ruby 版本的 resque-web 來監控 PHP-Resque 的運行狀況。
設計
Resque 的設計有兩個角色: Job 和 Worker。 每個 Job 都是定義成類別,新增 Job 的時候會將 Job 的類別和相關參數 json_encode 後儲存到不同的 queue 裡面,而 Worker(s) 則會依序從 redis 讀取 Job 出來執行。

#!/bin/bash
export APP_INCLUDE=resque/require.php
export QUEUE=*
export COUNT=1
export VVERBOSE=1 # for debugging
export REDIS_BACKEND=localhost:6379
. /etc/rc.d/init.d/functions
 
start() {
    /usr/bin/php ../lib/sdk/php-resque/resque.php
}
 
stop() {
    ps -ef | grep resque | grep -v grep | grep -v resque-web | awk '{print $2}' | xargs kill -15
}
kill() {
    ps -ef | grep resque | grep -v grep | grep -v resque-web | awk '{print $2}' | xargs kill -9
}
case "$1" in
    start)
         number=$(ps aux | grep php-resque/resque.php | grep -v grep | wc -l)
        if [ $number -gt 0 ]
        then
          echo "php-resque is running. ($number workers)"
          echo "You may wanna stop them before you start."
        else
          start
        fi
    ;;
 
    stop)
        stop
    ;;
 
    kill)
        kill
    ;;
 
    status)
        number=$(ps aux | grep php-resque/resque.php | grep -v grep | wc -l)
        if [ $number -gt 0 ]
        then
          echo "php-resque is running. ($number workers)"
        else
          echo "php-resque is not running."
        fi
    ;;
 
    *)
        echo -n "Usage: $0 {start|stop|status}"
esac

原文链接:

http://blog.hsatac.net/2012/01/php-resque-introduction/

http://601502546.blog.163.com/blog/static/259610762013112851935276/

此条目发表在 消息队列 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>