laravel结合workerman以后,端口不监听

克罗地鸦

效果如附件图片所示

阅读 1622
1个回答

xyzj91

为了回答你这个问题我特地注册了个账号.
之前这个问题也困扰了我一段时间,后面放弃了.不过找到问题是因为在windows下面getStartFilesForWindows()这个函数影响的:
foreach($argv as $file)
{
    if(_isfile($file))//此处会判断是否是文件,是文件的情况下才会加入数组中,laravel下面的命令肯定不是文件,所以此处$files就为空了
    {
        $files = $file;
    }
}

$files为空在windows下就不会fork进程出来了(linux下是不会有这个问题的)
网上提供的教程都是linux下运行的,所以不会有这个问题,在windows上集成就会出现你这个问题!!!!
 
解决方法:
改workerman的代码就行了:
Worker.php1335行的getStartFilesForWindows函数改成如下写法即可:
  public static function getStartFilesForWindows() {
        global $argv;
        $files = array();
_//        foreach($argv as $file)
//        {
//            if(isfile($file))
//            {
//                $files = $file;
//            }
//        }
       
$file = $argv;
        $files = $file;
        return $files;
    }

  • 暂无评论