Date : 2017-09-08
安装前准备:
php -v 如果php版本小于5.6的,请卸载
rpm -qa | grep php 删除掉
rpm -e php-cli-5.4.16-42.4.al7.x86_64 –nodeps
rpm -e php-devel-5.4.16-42.4.al7.x86_64 –nodeps
rpm -e php-common-5.4.16-42.4.al7.x86_64 –nodeps
删除后如果自己源码包安装的php无法找到,提示:-bash: /usr/bin/php: No such file or directory
vim /etc/profile 最后一行增加环境变量就OK
export PATH=/usr/local/php/bin:$PATH
source /etc/profile 更新下配置(ps 这里有个小坑,已登录的窗口要小退一下,重新登录才生效哦!)
php -v 看下OK
update 2017-12-13,之前编译安装的对于爬坑的同学来说有点繁琐,cut掉了,直接pecl install swoole简单粗暴吧!!!
工作原因忙了几个月,最近忙里偷闲写下文章
最新的方法,访问官网www.swoole.com ,官方教程完善了很多了,基本上按照官方的教程一步一步啃就差不多了
Linux 用户
#!/bin/bash
pecl install swoole
Mac 用户
#!/bin/bash
brew install swoole
安装没毛病的话会提示swoole.so躺在某个文件夹里面,然后在php.ini配置文件后面增加extension = “swoole.so”
然后ps -ef|grep php-fpm 找到master的进程号(26783)
root 26783 1 0 11:34 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nobody 26784 26783 0 11:34 ? 00:00:00 php-fpm: pool www
nobody 26785 26783 0 11:34 ? 00:00:00 php-fpm: pool www
重启php-fpm
kill -USR2 26783
然后php -m看下有没有swoole的扩展,如果没有,那么很大可能是cli模式下读取的php.ini文件和cgi模式下读取的配置不一样造成的
执行 php -i|grep php.ini 命令查看是不是这个情况
发现确实是这回事,把swoole.so增加到/usr/local/php/lib/php.ini文件中,然后重启php-fpm
Configuration File (php.ini) Path => /usr/local/php/lib
Loaded Configuration File => /usr/local/php/lib/php.ini
php –ri swoole #查看当前swoole版本
例子:
1 . Tcp server
<?php
//创建Server对象,监听 127.0.0.1:9501端口,保存为tcp.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, "Server: ".$data);
});
//监听连接关闭事件
$serv->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
});
//启动服务器
$serv->start();
php tcp.php 就可以启动一个和简单的tcp服务器了
netstat -an | grep 9501 查看是否为listen状态
tcp 0 0 127.0.0.1:9501 0.0.0.0:* LISTEN off (0.00/0/0)
现在可以telnet 127.0.0.1 9501 连接上server,输入什么鬼,返回什么鬼
2 . 异步mysql
<?php
$db = new Swoole\MySQL;
$server = array(
'host' => '127.0.0.1',
'user' => 'root',
'password' => '你的数据库密码',
'database' => 'test',
);
$db->connect($server, function ($db, $result) {
echo "<pre>";
//查询数据库...
$db->query("select * from user",function(Swoole\MYSQL $db,$result){
var_dump($result);//异步反馈结果
$db->close();
});
});
看到这里应该可以了吧,哪些你曾经以为很牛逼的技术是不是没有你想象中的那么难呢,哈哈哈,恭喜您,已经开始swoole的爬坑旅途了
其他更多好玩的请移步官方网站www.swoole.com