workerman 4.0.8版本 在nfs文件系统下的问题

ezreal
    protected static function lock()
    {
        $fd = \fopen(static::$_startFile, 'r');
        if ($fd && !flock($fd, LOCK_EX)) {
            static::log('Workerman['.static::$_startFile.'] already running.');
            exit;
        }
    }

Worker启动之前会调用php的flock函数,
如果启动文件无法打开或者flock失败则会返回 already running
但是在nfs文件系统中,文件通过fopen以'r'的模式打开,再调用php的flock始终是返回false
所以无论是要执行start、status还是reload,在命令被解析之前代码都会在Worker:lock 这里结束,并提示already running

另外,在不更换文件系统类型的前提下,尝试用 w 模式打开打开文件,Worker是可以正常启动的

触发的系统环境
Linux #32~18.04.1-Ubuntu
php版本:7.2.32

1721 1 0
1个回答

walkor

暂时把锁机制去掉了。请更新到4.0.9或者后续更高版本

  • 暂无评论
年代过于久远,无法发表回答
🔝