predis 配合 supervisord 做消息队列

Ws2年前分什么类5617

不是完整的代码,了解大概用。我的测试服务器比较老。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


相关文章

摩友福音!通知转语音

摩友福音!通知转语音

因为穷,一直摩托车通勤,开了这么多年摩托车,其他什么都好,但是有个小困扰,行驶过程中会耽误一些重要的回复,虽然大多数人的消息可以滞后再回复,但是咱还没有到那么高的级别,什么事情都可以不紧不慢的处理。就...

不太理想的Fine-tunes

不太理想的Fine-tunes

之前了解到openai可以针对GPT3.0进行再训练时,就已经迫不及待的试验了一把,但是效果不尽人意,我都准备放弃它了。需求点,是准备让它充当客服,喂了一部分客服QA。但是各种微调之后给的结果仅是补充...

Debian 10 开发一个go语言接口

Debian 10 开发一个go语言接口

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

mpvue vant 做个简单的核销小程序

我们公司业务一般偏营销,小程序的属性在营销这块没有那么明显,所以很少会有小程序的业务,这次也是帮朋友的忙,用mpvue+vant做了个简单的应用。应用不复杂,但是大部分的功能也都用到了,比如生成/扫描...

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

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

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

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

发表评论    

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