swoole 入门
1. 概述
Swoole是PHP的一个扩展,但是它与普通的扩展不同,普通的扩展知识提供一个库函数,而Swoole扩展在运行后会接管PHP的控制器,进入时间循环。当IO时间发生后,Swoole会自动回调指定的PHP函数。
Swoole解决了php的即时通信、异步任务、消息队列等方面的问题。Swoole的很多功能都需要CLI(Command Line INterface)的。所以学习Swoole需要一定的Linux/Unix环境编程基础。
2. 安装Swoole
环境要求: Linux/Unix操作系统。Linux内核2.3.32+,php5.3.10+,依赖gcc和cmake包。
Swoole是PHP的标准扩展。所以可以使用phpize来生产PHP编译配置,./configure来做编译配置检测,make来编译,make install来安装。而且Swoole已经收录到PHP官方扩展库,还可以通过pecl install swoole
来安装
- 安装
yum install gcc make autoconf pcre-deve # 安装依赖包
wget http://pecl.php.net/get/swoole-1.9.6.tgz
tar zxvf swoole-1.9.6.tgz
cd swoole-1.9.6
where phpize # 查phpize位置
/usr/local/opt/php56/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
make
sudo make install
- php.ini配置
增加以下内容
extension = swoole.so
swoole.aio_thread_num = 2; # 设置AIO异步文件的线程数量
swoole.display_errors = On ; ## 关闭/开启Swoole错误信息,开发的时候就开启吧
swoole.unixsock_buffer_size = ; # 设置进程间通信的UnixSocket缓存区尺寸
swoole.use_namespace = On; # 使用命名空间类风格。默认为关闭。(需要1.8.1+版本)
- 查看安装效果
php-fpm restart;
php -ri swoole | grep Version ; # -ri 显示php的扩展信息
php -m | grep swool
3. 开始Swoole之旅
- 先构建一个Server
vim abc.php
<?php
/**
* 启动一个swoole服务,监听9501端口
*/
$serv = new swool_server('127.0.0.1',9501);
$serv->set(['worker_num'=>2]); // 设置进程数(cpu核数的1-4倍)
/**
* swoole_server是事件驱动。
* 链接事件
* $fd 唯一标识。用于去吧不同的客户端
*/
$serv->on('Connect', function ($serv,$fd) {
echo "new client connected.".PHP_EOL;
});
/**
* 接受事件
* $fromId reactor线程id
* $data 接收到的数据(字符串或者二进制内容)
*/
$serv->on('Receive', function ($serv, $fd,$fromId,$data) {
$serv->send($fd,'Server '.$data);
});
/**
* 关闭链接事件
*/
$serv->on('Close',function($serv,$fd) {
echo "Cleint close.".PHP_EOL;
});
$serv->start();
- 通过telnet模拟Client访问这个Server
在访问之前在命令行输入
php abc.php
来启动服务。
可以通过netstat -anp | grep 9501
来查看服务是否起来
yum install telnet
telnet 127.0.0.1 9501
send ayt
4. 常用php命令
- php -i # 打印php.ini
- php --ini # 打印关于php.ini的信息
- php -m # 查看php加在哪些扩展
- php -l # 检测文件是否有语法错误(php -l test.php)
- php -r # 直接运行php代码(php -r 'echo "hi";')
参考资料
swoole 入门的更多相关文章
- Swoole 入门学习(二)
Swoole 入门学习 swoole 之 定时器 循环触发:swoole_timer_tick (和js的setintval类似) 参数1:int $after_time_ms 指定时间[毫秒] ...
- Swoole入门到实战 打造高性能 赛事直播平台(完整版)
Thinkphp+Swoole入门到实战打造高性能赛事直播平台 第1章 课程介绍 欢迎大家来到swoole的课程!本章主要是介绍了swoole的一些特性,以及使用场景,并且分享了swoole在其他公司 ...
- swoole入门到实战打造高性能赛事直播平台☆
第1章 课程介绍 本章主要是介绍了swoole的一些特性,以及使用场景,并且分享了swoole在其他公司的一些案例,最后重点讲解了swoole学习的一些准备工作. 第2章 PHP 7 源码安装 本 ...
- swoole入门abc
1. 入门abc 1.1 github账号添加 第一步依然是配置git用户名和邮箱 git config user.name "用户名" git config user.email ...
- 韩天峰力荐 Swoole入门到实战打造高性能赛事直播平台
第1章 课程介绍欢迎大家来到swoole的课程!本章主要是介绍了swoole的一些特性,以及使用场景,并且分享了swoole在其他公司的一些案例,最后重点讲解了swoole学习的一些准备工作.1-1 ...
- [Swoole入门到进阶] [精选公开课] Swoole服务器-Server的四层生命周期
PHP 完整生命周期 执行PHP文件 PHP扩展模块初始化(MINIT) PHP扩展请求初始化(RINIT) 执行 PHP 逻辑 PHP扩展请求结束(RSHUTDOWN) PHP脚本清理 PHP扩展模 ...
- mac php Swoole入门
一. swoole 扩展安装 安装前必须保证系统已经安装了下列软件 php-7.0 或更高版本 gcc-4.8 或更高版本 make autoconf pcre (CentOS系统可以执行命令:yum ...
- swoole入门简介
原文:https://www.cnblogs.com/dormscript/p/4811921.html 本文主要记录一下学习swoole的过程.填过的坑以及swoole究竟有多么强大! 首先说一下对 ...
- Swoole入门到实战打造高性能赛事直播平台(完整版)
需要 的联系我,QQ:1844912514
随机推荐
- c# 读取excel数据的两种方法(转)
转载自:http://developer.51cto.com/art/201302/380622.htm, 方法一:OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不 ...
- 详解 mpls vpn 的实现
MPLS VPN的实现 一.实验目的 该实验通过MPLS VPN的数据配置,使学生掌握路由器相关接口的IP地址设置.路由协议的配置以及MPLS VPN的完整的创建过程, 从而加深对IP网络的IP编址. ...
- Js函数初学者练习(一)switch-case结构实现计算器。
前 言 JRedu 给大家介绍一点JS函数的练习题希望初学者多做一些练习能够更好的掌握JS的函数,以及能够提升大家的逻辑思维.(我也是个渣渣希望路过的大神多提建议或意见) 希望能够对大家有所帮助 ...
- 结对实验---基于GUI的四则运算
详细代码:https://git.coding.net/wangluo24/NO.2.git 结对伙伴:吕志哲(201421123021) &本人.许明涛 201421123024 一.题目要 ...
- Swing-setBounds()用法-入门
先看API: public void setBounds(Rectangle r) 移动组件并调整其大小,使其符合新的有界矩形 r.由 r.x 和 r.y 指定组件的新位置,由 r.width 和 r ...
- 201521123039 《java程序设计》第八周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 总结: 1.集合可以动态修改大小,但是不可以存放基本数据类型: 2.java中任何对象都是is-a Objec ...
- 201521123054《Java程序设计》第1周学习总结
#1. 本章学习总结 你对于本章知识的学习总结 本章我们学习了各种java相关文件的使用,能够进行基本的程序操作: 学会使用博客.码云与PTA管理java: #2. 书面作业 1.为什么java程序可 ...
- 201521123007《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- 201521123069 《Java程序设计》 第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 1.线程间的互斥访问(线程竞争):一些同时运行的线程需要访问共享数据,互斥访问是保证共享资源完整性的手段.实现方式 ...
- 201521123034《Java程序设计》第十一周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 多线程的冲突 互斥共享(有时两个或两个以上的线程需要同时对 而线程之间如果不加以控制,会产生一种情况-竞争) sy ...