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],表示成功.


原文地址: https://www.zhuyilong.我爱你/tech/workerman_windows_start.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM