predis 配合 supervisord 做消息队列

Ws4周前分什么类86

不是完整的代码,了解大概用。我的测试服务器比较老。centos 6.5

yum install supervisord  // 直接安装

安装解释后,配置/监听可执行文件 /etc/supervisord.conf

[program:predis_program]
command=/usr/bin/php /www/web/queue/index.php
autostart=true
autorestart=true
user=web
redirect_stderr=true
stdout_logfile=/var/log/predis.log

直接启动

service supervisord start // 启动


index.php中,使用了 predis库,show code

require "./library/predis/vendor/autoload.php";

Predis\Autoloader::register();

// 定义远程接口地址和其他参数
$remoteApi = 'https://www.ab.com/api';

// 实例化 Redis
$client = new Predis\Client([
    'scheme' => 'tcp',
    'host' => '127.0.0.1',
    'port' => 6379,
]);

// 定义处理函数
function handleQueueItem($item, $remoteApi)
{
    // 将消息队列中的数据解析为数组或对象
    $data = json_decode($item, true);

    // 向远程接口发送请求
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $remoteApi);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    $response = curl_exec($ch);
    curl_close($ch);

    // 处理远程接口返回的数据
    // ...
}

// 开始监听消息队列
while (true) {
    // 从队列中获取数据
    $item = $client->lpop('message_queue');

    if ($item) {
        // 处理队列中的数据
        handleQueueItem($item, $remoteApi);
    }

    // 休眠 1 秒
    sleep(1);
}


代码结束。


系统设置自启动 Centos 6.5

添加 启动配置文件 /etc/init.d/supervisord

#!/bin/bash
#
# supervisord   Startup script for the Supervisor process control system
#
# chkconfig: - 95 04
# description: Supervisor is a client/server system that allows its users \
#              to monitor and control a number of processes on UNIX-like \
#              operating systems.
# processname: supervisord
# config: /etc/supervisord.conf
# pidfile: /var/run/supervisord.pid

# Source function library
. /etc/rc.d/init.d/functions

# Source system settings
if [ -f /etc/sysconfig/supervisord ]; then
        . /etc/sysconfig/supervisord
fi

prog="supervisord"
pidfile=${PIDFILE-/var/run/$prog.pid}
lockfile=${LOCKFILE-/var/lock/subsys/$prog}

start()
{
        echo -n $"Starting $prog: "
        daemon --pidfile=${pidfile} supervisord -c /etc/supervisord.conf
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch ${lockfile}
        return $RETVAL
}

stop()
{
        echo -n $"Stopping $prog: "
        killproc -p ${pidfile} ${prog}
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f ${lockfile} ${pidfile}
}

reload()
{
        echo -n $"Reloading $prog: "
        killproc -p ${pidfile} ${prog} -HUP
        RETVAL=$?
        echo
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status -p ${pidfile} ${prog}
        RETVAL=$?
        ;;
  restart)
        stop
        start
        ;;
  condrestart)
        if [ -f ${pidfile} ] ; then
            stop
            start
        fi
        ;;
  reload)
        reload
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
        RETVAL=2
        ;;
esac

exit $RETVAL

授权

chmod +x /etc/init.d/supervisord

添加到系统服务并设置为开机自启

chkconfig --add supervisord
chkconfig supervisord on


相关文章

利用树莓派设置局域网代理

还有更方便的软路由就不介绍了,自己Google。正好有个闲置的树莓派,国外有个正在用的服务器。就给同事提供福利咯思路:在树莓派上安装v2ray客户端,然后同事们连接树莓派的代理就行了。1、树莓派安装v...

视频+背景音,批量生成 python

去年项目中,有个需要根据用户姓名性别,播放不同欢迎语的视频需求。原计划通过webaudio实时在客户端生成的,总是最终还是放弃了,最终采用比较死板的方式,提前根据姓氏字典批量生成。直接展示代码了,当然...

世面

上一篇发布的视频,很多人在留言讨论,我发表下GPT的看法吧。"世面"是一个非常主观的概念,因为每个人对世界的认知和体验都是不同的。对于某些人来说,见过世面可能意味着游历过很多国家,...

UNTITLED

随便发发,域名 服务器 闲着也是闲着,偶尔也有干货互联网从业20年,总归有点儿东西...

Debian 10 开发一个go语言接口

Debian 10 开发一个go语言接口

首先是安装go环境 # 1、预备工作 sudo apt-get update sudo apt-get -y install&...

短视频

短视频

关注短视频确实过晚了,不过我没想着去赚红利,随便看看。目前douyin tiktok 席卷,视频号一直发力,肯定是追不上了,...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。