基于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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章