问题描述
使用laravel框架composer加载workerman/gateway-worker扩展使用workerman做客服系统.通过laravel的command命令: php artisan app:chat start启动.linux服务器上正常,在window服务器上启动失败,无报错(如下图)
问题原因
\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