关于启动Workerman时log问题

李明

我用 php start.php start -d 方式启动Workerman,奇怪的是没有log文件生成 ,
我在start.php文件下面写上了这行代码
Worker::$stdoutFile = '/home/www/logs/'.date('Y-m-d').".log";
之前一直都可以的,但不知道为什么这次就不会生成文件,请高人指点一下。

2400 2 0
2个回答

blogdaren

把start.php代码贴一下

  • 李明 2020-04-26

    <?php
    /**

    • run with command
    • php start.php start
      */

    ini_set('display_errors', 'on');
    use Workerman\Worker;

    if(strpos(strtolower(PHP_OS), 'win') === 0)
    {
    exit("start.php not support windows, please use start_for_win.bat\n");
    }

    // 检查扩展
    if(!extension_loaded('pcntl'))
    {
    exit("Please install pcntl extension. See http://doc3.workerman.net/appendices/install-extension.html\n");
    }

    if(!extension_loaded('posix'))
    {
    exit("Please install posix extension. See http://doc3.workerman.net/appendices/install-extension.html\n");
    }

    // 标记是全局启动
    define('GLOBAL_START', 1);

    require_once __DIR__ . '/vendor/autoload.php';

    // 加载所有Applications//start.php,以便启动所有服务
    foreach(glob(__DIR__.'/Applications/
    /start*.php') as $start_file)
    {
    require_once $start_file;
    }

    Worker::$stdoutFile = '/home/www/logs/log.log';

    // 运行所有服务
    Worker::runAll();

  • 李明 2020-04-26

    而且 用户是root 应该不存在权限问题

  • blogdaren 2020-04-26

    启动脚本没发现啥问题,你确定也不是权限的问题,而且连log文件都没生成,所以我感觉这个你还是源码debug下吧。

  • 李明 2020-04-26

    @614:好吧 ,谢谢你啦

  • blogdaren 2020-04-26

    不客气,Worker.php源码的resetStd()方法里调试下fopen() 的返回值。

  • blogdaren 2020-04-26

    不过逆推绝不会是workerman的问题,还是你环境哪里影响到了,除了常见原因就不好判断了,所以源码debug起。

李明

关于这个log的问题我做了个测试,我下载了最新的,GatewayWorker 添加了$stdoutFile功能,第一次启动是可以的,但我把那个log文件删除,再stop后 再start -d 就不能生成log文件了。这是为什么呢?

  • six 2020-04-27

    是不是其它进程占用了这个文件,虽然删除了,但是实际上其它进程仍然在引用这个文件,导致新文件无法生成。ps aux 看下是不是开了多个workerman吧

年代过于久远,无法发表回答
🔝