workerman windows环境下无法启动问题

问题描述

使用laravel框架composer加载workerman/gateway-worker扩展使用workerman做客服系统.通过laravel的command命令: php artisan app:chat start启动.linux服务器上正常,在window服务器上启动失败,无报错(如下图)

workerman启动失败

问题原因

\workerman\Worker.php: 1424

    /**
     * Get start files for windows.
     *
     * @return array
     */
    public static function getStartFilesForWindows() {
        global $argv;
        $files = array();
        foreach($argv as $file)
        {
            if(\is_file($file))
            {
                $files[$file] = $file;
            }
        }
        return $files;
    }

代码如上,函数返回的$files数组中的文件是用来fork worker进程的.当$argv数组中无文件名导致返回的$files为空时就会出现上述问题.

解决方案

注释掉代码中对$argv[0]的赋值,或是直接添加/替换命令执行文件(laravel为artisan; thinkphp为think)到全局数组$argv中,eg:

global $argv;
//$argv[0] = 'app:chat'; //注释此行(当$argv[0]初始值就为artisan时)

或

$argv[0] = 'artisan'; //重新赋值可执行命令文件

重新启动,出现[OK],表示成功.


posted @ 2020-11-06 11:03  coding在路上~  阅读(1005)  评论(0编辑  收藏  举报