方法1:(自测安装失败)
pecl install swoole
方法2:【源码安装swoole】,自测安装成功
安装对异步redis的支持:
官方文档:https://wiki.swoole.com/wiki/page/p-redis.html
操作步骤:
wget https://github.com/redis/hiredis/archive/v0.13.3.tar.gz
tar -zxvf v0.13.3.tar.gz
cd hiredis-0.13.3/
[root@localhost hiredis-0.13.3]make -j
[root@localhost hiredis-0.13.3]sudo make install
[root@localhost hiredis-0.13.3]sudo ldconfig
安装需要的包:yum install glibc-headers
yum install gcc-c++
安装swoole:
www.swoole.com首页找到下载:
https://gitee.com/swoole/swoole/tree/v2.1.2
yum install git
git clone https://gitee.com/swoole/swoole.git
或直接下载zip包然后unzip
cd进入解压后的目录
看看有没有configure这个文件,如果没有,在解压后的swoole目录中执行:
/php安装目录/bin/phpize
执行完成后就可以看到生成的configure文件了
./configure --help可以看到安装时可以指定的相关设置项
如:
--with-php-config=/usr/local/bin/php-config(指定php配置文件路径)
--enable-async-redis(增加对异步redis的支持)
--enable-coroutine(开启协程)
[root@localhost swoole]# ./configure --with-php-config=/usr/local/bin/php-config --enable-openssl --enable-async-redis --enable-mysqlnd
[root@localhost swoole]#make clean(如果之前make过,执行一下次行命令)
[root@localhost swoole]#make
[root@localhost swoole]#make install后,可以看到屏幕打印出生成的扩展的路径
可能遇到的问题:
php-m 发现swoole消失或者是通过php --ri swoole没有显示async redis client
或报类似错误:
PHP Warning: PHP Startup: Unable to load dynamic library 'swoole' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/swoole (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/swoole: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/swoole.so (libhiredis.so.0.13: cannot open shared object file: No such file or directory)) in Unknown on line 0
解决方法:
vi ~/.bash_profile
在最后一行添加 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
source ~/.bash_profile
重新编译安装swoole即可
检查安装是否成功:
php -m 查看swoole扩展是否开启
php --ri swoole查看async redis client => enabled是否存在
【让php7支持swoole】
在php.ini中添加
extension=swoole
extension=sockets(如果报错的话)
php -m 查看是否有swoole扩展
到之前下载的swoole源码中的examples/server下执行
php echo.php
如果不报错就安装成功了
netstat -ntlp看看
【tcp与udp的区别】
https://blog.csdn.net/li_ning_/article/details/52117463
【查看进程及状态】
ps aft | grep tcp.php(某个server文件的名称)
D 不可中断 Uninterruptible sleep (usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X 死掉的进程
N 低优先级
L 有些页被锁进内存
s 包含子进程
+ 位于后台的进程组
l 多线程,克隆线程
【nginx转发】
将root指向的目录中不存在的请求转发
location / {
root /home/....
index index.html
if 这里有个空格(!-e $request_filename){
#以下是一台机器时的配置方法
proxy_pass http://ip:端口;
#以下是多台机器时的配置方法
proxy_pass http://swoole_hurong
}
}
upstream swoole_hurong这个名称随便起 {
server ip:端口 weight=2;#等号两边不能有空格
server ip:端口 weight=1;
}
【nginx负载均衡】
第一台承担2/3
第二台承担1/3
upstream swoole_hurong这个名称随便起 {
server ip:端口 weight=2;#等号两边不能有空格
server ip:端口 weight=1;
}