php+swoole 迈不过友情╰ 2023-10-17 22:32 26阅读 0赞 swoole官网:www.swoole.com Swoole:面向生产环境的 PHP 异步网络通信引擎 是PHP开发人员可以编写高性能的异步并发 TCP,UDP,UnixSocket,HTTP,WebSocket服务。 Swoole可以广泛的应用于互联网,移动通信,企业软件,云计算,网络游戏,物联网(IOT),车联网,智能家居等领域。使用PHP+Swoole作为网络通信框架,可以使企业IT 研发团队的效率大大提升,更专注于开发创新产品。 如何学习swoole 查看文档 实现swoole特性的功能点 多看看其他现有的swoole案例代码(github,开源中国) 必须要学的源码安装: PHP7的源码安装 从官网下下来的包 php-7.2.4.tar.bz2 yum –y install bzip2ls tar -xjvf php-7.2.4.tar.bz2 1.编译部分: 里面的 ./configure 是shell脚本用来编辑安装的,需要工具gcc, autoconfig yum install gcc gcc-c++ -y yum install autoconf -y yum -y install libxml2 yum -y install libxml2-devel yum -y install openssl yum -y install openssl-devel yum -y install curl yum -y install curl-devel yum -y install libjpeg yum -y install libjpeg-devel yum -y install libpng yum -y install libpng-devel yum -y install freetype yum -y install freetype-devel yum -y install pcre yum -y install pcre-devel yum -y install libxslt yum -y install libxslt-devel yum -y install bzip2 yum -y install bzip2-devel 上面的安装完成后执行配置 ./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip 实际上这里的配置项比上述还多,可以使用 ./configure --help 命令查看所有选项,这里注意在php7中--with-mysql原生支持已经不存在了,操作都变成mysqli或者pdo了;以上这些选项在正常的php开发中完全够用了,后期如果需要,可以选择手动开启相应的模块 2. 构建部分: 构建命令:make 完成后检测:make test 。需要耗费一点时间 3.安装 make install 编辑当前用户路径环境变量: vim ~/.bash\_profile 里面exprot PATH后面加上: alias php=/usr/local/php/bin/php 保存,然后 source ~/.bash\_profile 后面用php执行器就 php -v php的默认安装位置上面已经指定为/usr/local/php,接下来配置相应的文件: cp php.ini-development /usr/local/php/lib/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp sapi/fpm/php-fpm /usr/local/bin 然后设置php.ini,使用: vim /usr/local/php/lib/php.ini 打开php配置文件找到cgi.fix\_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0 设置完毕保存并退出 另外注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,编译参数可以写成:--with-config-file-path=/usr/local/php 这样的话php就回去指定的目录下读取php.ini配置文件,如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的,这点要注意 此时首先应该创建web用户:(如果已经做了这个就可以跳过,可以是 www) groupadd www-data useradd -g www-data www-data 然后网上一些教程说让修改php-fpm.conf添加以上创建的用户和组,这时候使用 vim /usr/local/etc/php-fpm.conf 打开文件后找不到官方所提示的位置: 默认情况下etc/php-fpm.d/下有一个名为www.conf.defalut的配置用户的文件,执行下面命令复制一个新文件并且打开: cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf vim /usr/local/etc/php-fpm.d/www.conf 默认user和group的设置为nobody,将其改为www-data,(这个按创建的用户和用户组改) 修改完成之后,保存并退出,然后执行以下命令启动php-fpm服务: /usr/local/bin/php-fpm 启动完毕之后,php-fpm服务默认使用9000端口,使用 netstat -tln | grep 9000 可以查看端口使用情况: 9000端口正常使用,说明php-fpm服务启动成功 然后执行 vim /usr/local/nginx/nginx.conf 编辑nginx配置文件,具体路径根据实际的nginx.conf配置文件位置编辑,下面主要修改nginx的server \{\}配置块中的内容,修改location块,追加index.php让nginx服务器默认支持index.php为首页: 然后配置.php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容: 这里面很多都是默认的,root是配置php程序放置的根目录,主要修改的就是fastcgi\_param中的/scripts为$document\_root 修改完上面的,回到nginx.conf第一行,默认是\#user nobody; 这里要去掉注释改为user www-data;或者user www-data www-data;表示nginx服务器的权限为www-data(前面安装nginx时就修改为了 user www www,这里可以跳过) 修改完这些保存并退出,然后重启nginx: /usr/local/nginx/nginx -s stop/usr/local/nginx/nginx 接下来编辑一个测试的php程序,在nginx下的html目录下创建test.php文件,打印一下php配置: <?php phpinfo();?> //装载地址 http://www.cnblogs.com/freeweb/p/5425554.html 下面是补充说明: 安装好的php里面是没有php.ini文件的,但是编译后的文件里面有,从编辑的文件中拷贝过去 cp php.ini-development /usr/local/php/etc/ mv php.ini-development php.ini 如果改了php的配置但是没有生效,请用 php -i |grep php.ini 查看启用的是哪里的配置文件 Configuration File (php.ini) Path => /usr/local/ php/lib 上面是默认放置位置,所以说要修改位置应该在编译时指定位置 -- mv ./etc/php.ini ./lib 下载安装swoole: 进入www.swoole.com点击下载,然后会跳转界面,选取克隆下载地址:https://gitee.com/swoole/swoole.git linux 上安装git后: git clone https://gitee.com/swoole/swoole.git 下载后是已经解压好的源码 源码安装,发现这里面没有 configure,此时运行装好的phpize 执行命令:/home/work/study/soft/php/bin/phpize 这是再看,发现swoole下面有了 configure,还有一些其他改变 ./configure --with-php-config=/home/work/study/soft/php/bin/php-config 然后 make 然后 make install 出现:Installing shared extensions: /home/work/study/soft/php/lib/php/extensions/no-debug-non-zts-20170718/ 这个路径说的是扩展的路径。 进入后打印如下:\[root@bogon no-debug-non-zts-20170718\]\# ll total 9944 \-rwxr-xr-x. 1 root root 3581556 Apr 5 01:00 opcache.a \-rwxr-xr-x. 1 root root 1971952 Apr 5 01:00 opcache.so \-rwxr-xr-x. 1 root root 4622688 Apr 5 09:47 swoole.so 所以说最终的扩展是 .so 文件。 如果进入 /home/work.... 要跳回之前的目录用: cd - 在swoole源码安装包里面有 example,进入,这里面都是使用swoole的例子。 cd server 。 打开 echo.php,查看 直接 php echo.php 报错,原因是扩展文件的加载还要看php.ini里面的 extension= 在php.ini中加上 extension=swoole ,然后 php -m 就可以看到加载的模块swoole了(这里说明一下,只有在指定的扩展目录下面有相应的.so文件,并且php.ini里面添加了配置,php -m才能查看到该扩展) 再次运行 php echo.php 然后查看此端口:netstat -anp|grep 9501 得到结果:tcp 0 0 0.0.0.0:9501 0.0.0.0:\* LISTEN 32898/php ctrl+c 取消掉运行程序后再次 netstat -anp|grep 9501 发现没有了,消失了 查看端口号: netstat -anp|grep 9501 telnet 127.0.0.1 9501 来源:[https://blog.csdn.net/birdfish123/article/details/80538974][https_blog.csdn.net_birdfish123_article_details_80538974] [https_blog.csdn.net_birdfish123_article_details_80538974]: https://blog.csdn.net/birdfish123/article/details/80538974
还没有评论,来说两句吧...