基於httpsqs隊列的實踐

httpsqs的詳細信息可以百度

這裏使用的主要是模擬異步處理程序,如果要實現隊列的消息訂閱模式,可以參考activemq等其他消息中間件

方法1 採用文件鎖的方式

$fp = fopen('/path/to/flocktest', 'w+');
if (flock($fp, LOCK_EX|LOCK_NB)) { // 支持win32平臺
	while(true) {
	    $data = $httpsqs->get($qname);
	    if ($data != 'HTTPSQS_GET_END' && $data != 'HTTPSQS_ERROR') {
	        // process
	        ...
	    } else {
	        break;
	    }
	}
} else {
	echo "didn't get the clock.\r\n";
}
fclose($fp);

方法2 採用shell的方式

mq.sh 此shell需要計劃任務一天執行一次

export daemon_path='/var/www/daemon/'
file_name='test.sh'
shell_count=`ps -ef | grep $file_name | grep -v grep -c`
if [ $shell_count -eq 0 ];then
    ${daemon_path}test.sh &
fi

test.sh

while [ 1 ]
do
    /usr/local/php/bin/php ${daemon_path}test.php
    sleep 30
done

test.php

/*核心code*/
while(true) {
    $data = $httpsqs->get($qname);
    if ($data != 'HTTPSQS_GET_END' && $data != 'HTTPSQS_ERROR') {
        // process
        ...
    } else {
        break;
    }
}


發佈了54 篇原創文章 · 獲贊 10 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章