1.概述:
Swoole是:PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器,处理异步任务,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole虽然是标准的PHP扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。而swoole扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后,swoole会自动回调指定的PHP函数。
2.Linux系统版本信息:
PHP 7.2.10-0ubuntu0.18.04.1 ;
3.Homestead Perl 方法安装swoole:
1) 安装流程:
1 $ sudo pecl channel-update pecl.php.net (sudo,否则无法打开文件,发生警告)
2 $ sudo pecl install swoole (sudo,否则无法打开文件,发生警告)
2) 如果遇见报错:No releases available for package “pecl.php.net/swoole”,解决:
1 $ pear clear-cache 2 $ pear update-channels 3 $ pear upgrade
3) 如果遇见报错:Cannot install, php_dir for channel "pecl.php.net" is not writeable by the current user,解决:
1 pecl config-get php_dir 获取配置文件php_dir参数 2 sudo chown< username> < php_dir> 更改该文件夹的所有权 3 pecl config-set php_dir /path/new/dir php_dir设置为其他文件夹
4) 根据自己需求,开启扩展支持:
1 enable sockets supports? [no] : 启用套接字支持?[否] 2 enable openssl support? [no] : 启用OpenSSL支持?[否] 3 enable http2 support? [no] : 启用HTTP2支持?[否] 4 enable mysqlnd support? [no] : 启用mysqlnd支持?[否] 5 enable postgresql coroutine client support? [no] : 启用PostgreSQL协程客户端支持?[否]
5) 安装成功显示如下:
1 Build process completed successfully 2 Installing '/usr/lib/php/20151012/swoole.so' 3 Installing '/usr/include/php/20151012/ext/swoole/config.h' 4 install ok: channel://pecl.php.net/swoole-4.2.11 5 configuration option "php_ini" is not set to php.ini location 6 You should add "extension=swoole.so" to php.ini
上面提示了,你应该添加extension=swoole.so到php.ini文件
6)查看php.ini文件位置,命令如下
1 php -i|grep php.ini
结果如下:
1 vagrant@homestead:~$ php -i|grep php.ini 2 Configuration File (php.ini) Path => /etc/php/7.0/cli 3 Loaded Configuration File => /etc/php/7.0/cli/php.ini
7)vim编辑一下 /etc/php/7.0/cli/php.ini,在扩展尾部加上extension=swoole.so,扩展前不要带分号
;extension=php_xsl.dll extension=swoole.so ;;;;;;;;;;;;;;;;;;; ; Module Settings ; ;;;;;;;;;;;;;;;;;;;
8)重启php环境
1 sudo service php7.0-fpm restart
9)查看swoole扩展是否安装成功
1 php -m |grep swoole
显示结果:
1 vagrant@homestead:~$ php -m |grep swoole 2 swoole
好了,Homestead安装swoole扩展就此安装成功
// vagrant reload --provision之后,php文件echo phpinfo();同样查看swoole扩展。