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/