正文 863字数 389,790阅读


在php laravel中使用workerman,启动的时候没有正常显示监听端口,且不能使用

在windows下面getStartFilesForWindows()这个函数影响的:

foreach($argv as $file) { if(is_file($file))//此处会判断是否是文件,是文件的情况下才会加入数组中,laravel下面的命令肯定不是文件,所以此处$files就为空了 { $files[$file] = $file; } }
Run code
Cut to clipboard


    $files为空在windows下就不会fork进程出来了(linux下是不会有这个问题的)
    网上提供的教程都是linux下运行的,所以不会有这个问题,在windows上集成就会出现你这个问题!!!!

    解决方法:
    改workerman的代码就行了:

    将Worker.php中1335行的
    getStartFilesForWindows
    Run code
    Cut to clipboard
      函数改成如下写法即可:

      public static function getStartFilesForWindows() { global $argv; $files = array(); // foreach($argv as $file) // { // if(is_file($file)) // { // $files[$file] = $file; // } // } $file = $argv[0]; $files[$file] = $file; return $files; }
      Run code
      Cut to clipboard