当使用swoole的coroutine时偶尔会遇到一些问题:
go()
方法无法使用:
Call to undefined function App\Controller\go() in /www/wwwroot/mix/src/Controller/Auth.php on line
报错的内容截图如下:
从以上报错看是没有go()
方法,其实如果swoole
正常安装的话,这个go()其实是存在的。
centos安装用pecl安装swoole的命令:pecl install swoole
只是可能将swoole.use_shortname的参数在配置文件中关闭了 swoole.use_shortname=Off
将以上代码注释掉即可
[swoole]
extension = swoole.so
;swoole.use_shortname=Off
正常情况下,配置php.ini。重启php即可。但在宝塔面板中,按照以上配置后。
重启php后,查看phpinfo()正常,但依旧会报错:
Call to undefined function go().....
最后多次排查下没问题,但发现文件 /www/server/php/80/etc/php-cli.ini
这个文件也需要修改,同样在末尾加上以下代码,重启php,发现可以正常使用!
extension = swoole.so
;swoole.use_shortname=Off
说明:
go方法:This function is an alias of function swoole_coroutine_create(); it's available only when directive"swoole.use_shortname" is not explicitly turned off.
如果关闭swoole的use_shortname
时,可以使用go()
代替方法swoole_coroutine_create(),
否则go()
方法不能正常使用,会报以上错误!