Почему супервизор не регистрирует мой PHP CLI fwrite (STDOUT, "message")? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть приложение командной строки PHP (zconsole awswebhookrunner), запущенное supervisord.

Supervisord не регистрирует файлы fwrite(STDOUT, "message"), но регистрирует echo "message".

Supervisord config

[program:aws_webhook]
command=/home/(username)/bin/zconsole awswebhookrunner
process_name=%(program_name)s_%(process_num)02d
numprocs=1
directory=/tmp
priority=999
autostart=true
autorestart=true
startretries=100
stopwaitsecs=10
user=(username)
stdout_logfile=/home/(username)/logs/aws_webhook_runner.out.log
stderr_logfile=/home/(username)/logs/aws_webhook_runner.err.log
stdout_logfile_maxbytes=10MB

PHP-код

private function log($message, $type="info")
{
    $output=STDIN;
    switch ($type) {
        case "error":
            $output=STDERR;
            break;
        default:
            $output=STDIN;
    }
    $to_log=date("Y-m-d H:i:s")." ".$message;
    fwrite($output,$to_log.PHP_EOL) ;
    //echo $to_log.PHP_EOL;
    fflush($output);
    unset($to_log);
}

Версия программного обеспечения

PHP version: 5.3.3
OS: CentOS 6.10
supervisord: 3.3.5

Вопросы

  1. Правильно ли настроены мои supervisord?
  2. Неужели я неправильно понял поведение fwrite(STDOUT|STDERR, $message);?
  3. Почему echo $message; работает, если отправлено в STDOUT?

1 Ответ

0 голосов
/ 22 февраля 2019
  1. Конфигурация мудрая, я думаю, что это нормально.Командно, это действительно другой вопрос.
  2. Вы пытаетесь STDIN вместо STDOUT.STDIN используется для ввода supervisord не имеет отношения к STDIN Я думаю.
  3. echo будет печатать в STDOUT, потому что это его поведение по умолчанию.
...