supervisor事件监听之PHP版

/home/www/monitor.php文件

<?php

function write_stdout($str)
{
    fwrite(STDOUT, $str);
}

function write_stderr($str)
{
    fwrite(STDERR, $str);
}

while (1)
{
    # transition from ACKNOWLEDGED to READY
    write_stdout("READY\n");

    $line = fgets(STDIN);
    write_stderr($line);

    $line = trim($line, "\n");
    $lineArr = explode(" ", $line);
    $data = [];
    foreach($lineArr as $key => $val) {
        $arr = explode(":", $val);
        if (count($arr) == 2) {
            $data[$arr[0]] = $arr[1];
        }
    }

    $line = fgets(STDIN, $data['len']);
    write_stderr($line);
    $line = trim($line, "\n");
    $lineArr = explode(" ", $line);
    $data = [];
    foreach($lineArr as $key => $val) {
        $arr = explode(":", $val);
        if (count($arr) == 2) {
            $data[$arr[0]] = $arr[1];
        }
    }

    write_stderr(json_encode($data));

    write_stdout("RESULT 2\nOK");
}

supervisor配置

[eventlistener:monitor]
command=/usr/local/php7/bin/php /home/www/monitor.php
events=PROCESS_STATE_STOPPING,PROCESS_STATE_FATAL
stdout_logfile=/var/log/supervisor/monitor.log
stderr_logfile=/var/log/supervisor/monitor_error.log

 

注意:write_stdout("READY\n");与write_stdout("RESULT 2\nOK");之间不能有任何如echo、var_dump、write_stdout等输出,只能用write_stderr打印信息,否则supervisor只能监听一次。

supervisor事件监听官网说明:
http://www.supervisord.org/events.html#configuring-an-event-listener

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值