Maison > développement back-end > tutoriel php > laravel5.1 - php 后台怎么开一个进程监听Redis的队列消息呢?用while?

laravel5.1 - php 后台怎么开一个进程监听Redis的队列消息呢?用while?

WBOY
Libérer: 2016-07-06 13:53:21
original
2051 Les gens l'ont consulté

我知道Redis的list有pub/sub模式,但是php 后台怎么开一个进程监听Redis的队列消息呢?用while循环吗?这样是不是不太好

回复内容:

我知道Redis的list有pub/sub模式,但是php 后台怎么开一个进程监听Redis的队列消息呢?用while循环吗?这样是不是不太好

<code>while($res = Redis::blpop($key)) {
    doJob($res);
}</code>
Copier après la connexion

Redis有阻塞原语读取队列,队列没有数据时,php监听进程会挂起

<code>while + sleep 没啥问题</code>
Copier après la connexion

<code>$cmd = "ps aux | grep -i '".$task_name."' | grep -v grep | wc -l";
if(shell_exec($cmd) > 0){
    echo "【$task_name】进程运行中…\r\n";
    return false;
}</code>
Copier après la connexion

通过pcntl_fork系列方法开启守护进程,监听请求。
redis队列有操作是发送请求到监听端口,同时处理历史失败消息队列。

谢邀。我没做过相关的实践。
刚搜了下:使用resque比较多
1)http://www.cnblogs.com/zl0372/p/3696641.html
2)http://avnpc.com/pages/run-background-task-by-php-resque
希望对你有所帮助

在服务器后台挂个进程去监控就好,supervisor,就算挂了也会自动重启

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal