php安装swoole
A. phpstudy怎么安装swoole扩展
在最后一行增加export PATH=/phpstudy/server/php/bin:$PATH
保存退出
在命令行运行 以下命令 重新加载变量sudo source /root/.bashrc
然后 执行命令phpize
显示结果root@hainuio-X401A:~/swoole-src-swoole-1.7.9-alpha# phpize Configuring for: PHP Api Version: 20100412 Zend Mole Api No: 20100525 Zend Extension Api No: 220100525
B. thinkphp 为什么安装swoller扩展
thinkphp 正常情况下是不需要安装swoole扩展的,如果采用swoole做服务或业务中用到swoole时才需要安装,其他框架也是如此。
C. php swoole 只能运行在php-cli 环境吗
一直想写点Swoole的东西,毕竟它重新定义了php,却一直不知道怎么下手写Swoole涉及的知识点非常多,互为表里,每次想写都发现根本理不出一个头绪Swoole是一个php的扩展,它的核心目的就是解决php在实现server服务中可能遇到的一系列问题,这些问题用源生的php往往并不能很高效(执行效率)的解决,一般也不会使用php来解决,所以会有说swolle重新定义的php的说法。
其实swoole也提供了一个框架,swoole framework是基于swoole extension设计的一个框架,要用好这个框架,还是要先了解swoole extension。
扩展的英文名称是Extension,php扩展是用C语言作为开发语言,基于Zend引擎提供的API,编译成的一个动态库。
如果曾经做过类似动态库调用开发的童鞋可能会更好理解一些,例如Android中的NDK开发在php的配置文件中配置好extension的属性后,就可以引用这个动态库了。
也就是说,swoole本身是用C语言编写的,它可以让php获得一些额外的function。
然后是运行方式,swoole的许多功能都只能运行在cli模式下,而cli模式往往是很多刚接触swoole的phper遇到的第一个问题。
有时候其实只是需要转变一下思路
我们现在整理一下最常见的php代码执行方式:
安装apache、php
配置apache对那个目录进行php解析
用浏览器访问那个目录的php文件
更多的细节这里就不提了,毕竟我相信每个phper对这个都是很熟悉的。
但这里就开始出现了第一个问题,我们知道,php是一个脚本语言,脚本语言的核心特点在于不用编译,随时执行,而执行脚本的工具就是解析器,而php的解析器就是zend引擎。
严格来说,zend并不是唯一的选择,不过,zend是最官方的。另外,Zend Studio和Zend Engine不是同一个东西,本文中的Zend全部指Zend Engine。
换个角度讲,只要有解析器,写好的php脚本就是可以执行的,而zend引擎与apache之间并没有绝对的关系实际上,apahce是调用了zend对php脚本进行执行,然后将执行结果输出给了浏览器所以所谓cli模式(CommandLine,命令行模式),其实就是在命令行下直接调用zend引擎对php脚本进行解析并执行,并获得程序输出结果的php脚本执行方式。
其实php也可以作为shell脚本来使用哦,就像bash shell一样既然问题讲清楚了,在一个系统中具体怎么操作呢?
本文以CentOS 7.5作为系统环境,swoole是针对linux系统开发的,windows下并不适用。学习swoole的一个前题是懂得基本的linux系统使用。
当安装好php的时候,找到php的安装目录,如果是默认安装的话,可以试试whereis命令# 某种简单的方法
whereis php
> /usr/local/bin/php;
locate whereis find这些命令都可以试试,目的是找到php然后我们来写一个最经典的php脚本:
<?php
//vi hello_cli.php
echo 'Hello PHP Cli';
编写纯php脚本时,php标签不要封口
然后我们在shell里执行它:
/usr/local/bin/php hello_cli.php
> Hello PHP Cli
这段代码中的第一个php,是一个可执行文件,它接受一个php脚本文件作为输入参数,并解析执行这个php脚本文件(通过zend)。
没有错,第一个cli模式下的php程序就被你执行成功了!
默认情况下,php都会被安装在了$PATH的目录下,那就可以直接省略路径前缀了,下文中调用php的时候,全都省略了路径前缀。
因为swoole是pecl的项目,所以使用pecl安装是最简单的方法,强烈推荐第一次接触的童鞋先使用pecl安装,在熟悉了swoole之后,再考虑使用编译安装的方式以获取更多进阶功能。
pecl这个工具基本都会被安装在与php相同的目录下(往往也都是$PATH目录)pecl install swoole
执行以下命令查看是否安装成功:
php -m | grep swoole
> swoole
如果正确的输出了swoole,那么恭喜你,这次安装很成功另一个常见的比较麻烦的问题是,有些童鞋的电脑里安装了多个php,而安装的时候没有正确的安装到预期的php的扩展目录中,就会导致无法正常工作,解决方案就是弄清楚各个php安装目录及配置关系,选择正确的目录进行安装。
其实本文还没正式开始介绍swoole,都是在学习swoole之前的准备工作,swoole的上手门槛比一般的php应用要高的多,如果没有网络开发和操作系统方面的一些知识,学习它并不是一件容易的事情,学习曲线很陡峭。
这句话我在群里说了无数次
很多新手会诟病swoole的手册写的太模糊,其实是前置知识不足,而手册也给出了需要的前置知识列表,以下引用至官网的手册-学习swoole需要哪些知识?
多进程/多线程
了解Linux操作系统进程和线程的概念
了解Linux进程/线程切换调度的基本知识
了解进程间通信的基本知识,如管道、UnixSocket、消息队列、共享内存socket
了解SOCKET的基本操作如accept/connect、send/recv、close、listen、bind了解SOCKET的接收缓存区、发送缓存区、阻塞/非阻塞、超时等概念IO复用
了解select/poll/epoll
了解基于select/epoll实现的事件循环,Reactor模型了解可读事件、可写事件
TCP/IP网络协议
了解TCP/IP协议
了解TCP、UDP传输协议
调试工具
使用gdb调试Linux程序
使用strace跟踪进程的系统调用
使用tcpmp跟踪网络通信过程
其他Linux系统工具,如ps、lsof、top、vmstat、netstat、sar、ss等学习并理解一个新事务并不是一个容易的事情,特别对于swoole这种具备一定颠覆性的工具,要有耐心和实践。
淡定的把手册看完,遇到不理解的名词学会使用搜索引擎学习,swoole的手册其实是个大宝库,网络开发常见的问题其实里边都涉及到了。
D. 菜鸟问个很基础的问题Centos怎么安装swoole
wget https://github.com/swoole/swoole-src/archive/swoole-1.7.6-stable.tar.gz
tar -zxvf swoole-1.7.6-stable.tar.gz
cd swoole-src-swoole-1.7.6-stable
phpize
./configure
make && make install
如果出现:Build complete.就表示安装成功
下来修改php.ini添加swoole扩展
extension_dir = "/usr/lib64/php/moles/"这个centos里边如果是yum安装的php,扩展默认就在这个目录,可以不配置
添加extension=swoole.so
重启php-fpm: /etc/init.d/php-fpm restart
在phpinfo里能到swoole就表示成功了,下边就开始愉快地使用swoole吧
E. swoole loader和swoole什么关系
他们都适用于web开发。
swoole框架像PHP框架一样,适用于web开发。他们的不同之处在于swoole扩展是提供了更底层的服务器通信机制,可以使用UDPTCP等协议,而不仅仅是http。
swoole扩展像其它PHP扩展一样安装,可以用pecl,也可以编译安装。而swoole框架用composer引入之后安装即可,或者下载源码后手动includerequir。
F. 在php中怎么引用swoole
你可以参考swoole的官方文档,
https://wiki.swoole.com
这里讲的很清楚,快捷入口在这里
https://wiki.swoole.com/wiki/page/475.html
不懂的要学会找文档看文档,要记得安装swoole
G. php代码在WSL系统上运行swoole 扩展.还需要安装搭建服务器吗
swoole扩展是PHP扩展。php swoole扩展,PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。
1、下载swoole源码包
[root@nginx ~]# wget
2、解压进入swoole文件夹
[root@nginx ~]# tar -zxvf swoole-1.7.17-stable
[root@nginx ~]# cd swoole-src-swoole-1.7.17-stable/
3、编译安装swoole
[root@nginx swoole-src-swoole-1.7.17-stable]# phpize
[root@nginx swoole-src-swoole-1.7.17-stable]# ./configure
[root@nginx swoole-src-swoole-1.7.17-stable]# make && make install
4、php.ini配置文件加载swoole.so模块
[root@nginx swoole-src-swoole-1.7.17-stable]# vi /usr/local/php/lib/php.ini
注意 php命令行运行和浏览器运行的配置文件不一样。
php 命令行的配置:
[root@nginx swoole-src-swoole-1.7.17-stable]# php --ini
Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: /usr/local/lib/php.ini//配置文件
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
5、查看swoole模块是否已经安装成功
[root@nginx swoole-src-swoole-1.7.17-stable]# php -m
6、编写服务端httpServer.php文件并运行
$serv = new swoole_server("127.0.0.1", 9501);
$serv->on('connect', function ($serv, $fd){
echo "Client:Connect.\n";
});
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
$serv->send($fd, 'Swoole: '.$data);
});
$serv->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
});
$serv->start();
运行httpServer.php
[root@nginx swoole-src-swoole-1.7.17-stable]# php httpServer.php
7、用telnet测试
[root@nginx ~]# telnet 127.0.0.1 9501
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hello 客户端
Swoole: hello 服务端
H. PHP5.3.3,在不升级php版本情况下,能使用swoole吗
swoole是框架吧!应该与php版本没什么太大的关系吧!网络上说支持5.3+ 应该是可以的
I. 我安装了swoole的php扩展,但为什么不能在前端实例化它
这是一个异步的服务端,不是前端使用的。
如果需要前端启动服务,可以把后端分离,然后运用exec "nohup php (Path/To/Server)"命令来启动服务。
J. windows sever2016怎么安装swoole
1.1、打开下载好的cygwin安装包,开始安装cygwin。
1.1.1、一直下一步,下一步到选择cygwin的安装目录(这个同时也会是swoole的安装目录):
1.1.2、选择文件包下载的存放位置:
1.1.3、选择(所要连接的)服务器(用于后续下载文件):
此处需要选择一个服务器,之后就是从该服务器下载对应的安装所需的模块文件了。
因此,此处如果选择的服务器不合适的话,尽管你的网络本身速度很快,但是此处下载速度很慢。
所以,此处需要选择一个速度比较快的服务器。
对于国内来说,连接很多国外的服务器,速度一般都很慢。
不过,目前已经的,口碑较好的,速度较快的服务器,是近几年刚出现的163的服务器。
所以,此处对于多数人,最好的选择就是选择163的服务器。
此处,我这里,由图可见,已经默认选择好了163的服务器,所以不需要额外设置了。
如果你的选择其他的服务器,而且服务器列表中也找不到163的话,那么可以自己手动添加:
在Use URL处,输入:
http://mirrors.163.com/cygwin/
1.1.4、选择安装的软件包,这里需要安装gcc、php、php开发工具、autoconf、pcre-devel,其它默认,这里注意的是,在上方的搜索栏搜索后,在下边找到对应的软件包选中,点击下一步按钮开始安装。(注意:下方的截图是我安装后界面,点击的位置一样,后边的图标可能不一样哦)
1.1.5、然后就是下一步下一步直到Cygwin安装完成。
2、安装swoole
2.1、解压swoole的源程序到Cygwin的项目根目录(如:/home/project)。
可以直接把压缩包放到/home/project目录下,右键解压,也可以用命令执行,随你。图方便,这里我直接使用右键方式解压。(命令解压:tar -zcvf file swoole-src-1.8.11-rc1.tar.gz)
2.2、打开Cygwin软件(注意:要是你的Cygwin也安装在C盘,那你得注意了,安装swoole的时候有可能报错,解决办法是右键管理员身份打开Cygwin)。
2.3、此时的环境就好似linux的终端,而根目录就是Cygwin的安装目录,在界面输入命令:cd /home/project/swoole,其中swoole是解压的源程序。
2.4、输入命令:phpize,生成编译的配置文件configure。
2.5、输入命令:./configure && make && make install
配置、编译、编译安装swoole
(PS:执行./configure,除了编译配置,还会检测环境等等)
2.6、使用命令: php -i | grep php.ini,找到php cli使用的配置文件php.ini的路径。
2.7、修改php.ini文件,在文件中添加一行:extension=swoole.so。
(PS: 1. 如果对linux下的vi编辑器不熟悉,可以在Windows下打开php.ini文件;2. 因为swoole已经改变了php的编程方式,所以建议关闭配置文件中的除swoole扩展之外的其它所有扩展,方法是在其前面加上“;”英文分号)。
2.7.1、linux下的vi编辑器。
2.7.2、手动打开修改。
2.8、关闭退出。
2.9、使用命令:php -m,查看加载的模块,如果看到swoole,则扩展添加成功,到此环境搭建成功!
环境测试
1、在源程序中有一个examples文件夹,里边是一些范例程序,我们这里以运行一个http服务器做示范,进入到http范例程序目录,在Cygwin中输入命令:php server.php,因为http服务器的范例程序是放在http目录中的,用命令运行这个范例程序
2、打开浏览器,在地址栏输入:127.0.0.1:9501,回车显示Hello swoole,成功!
总结分析
1、此方法虽然可以在Windows下成功搭建swoole,但是php版本最高也就5.4,对于项目php版本需求高于5.4的就没法使用了。这里是不是可以对其php版本升级呢?本人还没有尝试过,待后续...。如果有哪位大神成功升级,望留言说明方法以及提供建议,以此使我以及大众少走弯路,不胜感激。
2、搭建成功后会生成自己的一个类似PphStudy环境的“IBOS控制中心”,运行swoole的时候得用这个环境运行,不需要再安装别的php环境。
3、生成很多自带无用的表,看着不太舒服。数据库表也不好操作,本人还是习惯用navicat。