系统环境:debian12 php8.1 nginx/1.22
workerman/webman-framework 1.5.19
文档:https://www.workerman.net/doc/workerman/worker/stdout-file.html
首先我项目全局搜索,没找到Worker::$stdoutFile,
然后我看文档,就在根目录下的添加了代码(老大已经回复,不需要添加如下图的内容,log的路径在config/server.php文件内'stdout_file' => runtime_path() . '/logs/stdout.log' )
Worker::$stdoutFile = '/home/www/pay/runtime/logs/stdout.log';
然后也没生效,但没添加前,stdout.log这个文件就有了,
另外,还有一个问题,我是运行 -d模式,然后在方法写 echo 1;
接口就报502 Bad Gateway了,但其他接口正常,这样属于正常现象吗?
其实我是想在-sudo php start.php start -d 下进行调试接口,然后吧echo内容输出到stdout.log,最后没输出日志,接口还报502错误了。
麻烦大佬帮忙看下,估计是我文档没认真看,又是小问题属于,哈哈哈,就当是教教菜鸟吧,
项目全局搜索也没有定义这个全局变量:static string Worker::$stdoutFile
是不是得添加下,才生效,在哪里添加这个全局变量
运行 php -v 贴下具体版本
$ php -v
PHP 8.1.30 (cli) (built: Oct 11 2024 08:59:01) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.30, Copyright (c) Zend Technologies
with Zend OPcache v8.1.30, Copyright (c), by Zend Technologies
这个环境是你上周分享的安装的环境https://www.workerman.net/download 这个
我的项目git地址https://gitee.com/owenzhang24/webman-owen
最开始全局搜索,没找到Worker::$stdoutFile,但stdout.log这个文件是有的
stdout.log这个文件,在本地Windows开发没有生成,线上Linux系统有生成这个文件
$ sudo php start.php status
Workerman[start.php] status
----------------------------------------------GLOBAL STATUS----------------------------------------------------
Workerman version:4.2.0 PHP version:8.1.30
start time:2024-11-25 14:11:39 run 0 days 2 hours
load average: 0, 0, 0 event-loop:\Workerman\Events\Event
4 workers 10 processes
worker_name exit_status exit_count
webman 0 52
monitor 0 0
redis_consumer 0 52
task 0 13
----------------------------------------------PROCESS STATUS---------------------------------------------------
pid memory listening worker_name connections send_fail timers total_request qps status
17622 2.09M none monitor 0 0 2 0 0 [idle]
19013 11.78M http://127.0.0.1:8 webman 2 0 5 64 0 [idle]
19018 11.21M http://127.0.0.1:8 webman 2 0 6 12 0 [idle]
19019 11.23M http://127.0.0.1:8 webman 3 0 5 26 0 [idle]
19025 11.81M http://127.0.0.1:8 webman 2 0 5 50 0 [idle]
19028 7.97M none redis_consumer 2 0 5 1666 0 [idle]
19031 6.18M none redis_consumer 2 0 5 1665 0 [idle]
19037 6.18M none redis_consumer 2 0 5 1666 0 [idle]
19040 8M none redis_consumer 2 0 5 1667 0 [idle]
19047 6.04M none task 0 0 4 0 0 [idle]
----------------------------------------------PROCESS STATUS---------------------------------------------------
Summary 79M - - 17 0 47 6816 0 [Summary]
stdout.log 在config/server.php 里设置
stdout.log 是守护进程时将输出写入到这个文件
workerman在windows系统没有守护进程功能
502 Bad Gateway 的问题我要看下
config/server.php文件内'stdout_file' => runtime_path() . '/logs/stdout.log' 有设置这个,
那么另外根目录下的start.php 需要填写这个吗?Worker::$stdoutFile = '/home/www/pay/runtime/logs/stdout.log';
如图:https://www.workerman.net/upload/img/20241124/246742f0c22685.png
不用
502 Bad Gateway
我这问题未复现,如果还有问题可以换个php版本
OK,但我的问题没解决,echo打印的东西没写入日志,估计是502 Bad Gateway造成的吧,你可以下载我的项目看看,git地址https://gitee.com/owenzhang24/webman-owen