您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman属性stdoutFile(输出重定向)及daemonize实现脚本默认守护运行
发布时间:2021-11-30 22:15:29编辑:雪饮阅读()
stdoutFile
此属性为全局静态属性,如果以守护进程方式(-d启动)运行,则所有向终端的输出(echo var_dump等)都会被重定向到stdoutFile指定的文件中。
如果不设置,并且是以守护进程方式运行,则所有终端输出全部重定向到/dev/null (也就是默认丢弃所有输出)
注意:/dev/null 是linux下一个特殊文件,它实际上是一个黑洞,所有数据写入到这个文件都会被丢弃。如果不想丢弃输出,可以将Worker::$stdoutFile设置成一个正常文件路径。
注意:此属性必须在Worker::runAll();运行前设置才有效。
实例:
test.php
<?php
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
//默认守护进程开启
Worker::$daemonize = true;
// 所有的打印输出全部保存在/tmp/stdout.log文件中
Worker::$stdoutFile = '/tmp/stdout.log';
$worker = new Worker('text://0.0.0.0:8484');
$worker->onWorkerStart = function($worker)
{
echo "Worker start:".$worker->id."\n";
};
// 运行worker
Worker::runAll();
?>
实例运行:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start
----------------------------------------- WORKERMAN -----------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
------------------------------------------ WORKERS ------------------------------------------
proto user worker listen processes status
tcp root none text://0.0.0.0:8484 1 [OK]
---------------------------------------------------------------------------------------------
Input "php test.php stop" to stop. Start success.
可以看到输出已经生成了。
[root@izj6c2jeancylo0ppo4vz5z ~]# cat /tmp/stdout.log
Worker start:0
关键字词:workerman,stdoutFile,daemonize,守护