swoole深入学习 1. swoole初始
swoole深入学习 1. swoole初始
标签(空格分隔): swoole
0. 前言
swoole在php圈火了这么久,从2年前我用node写socket聊天服务器的时候就火了,那时候,经常有类似的文章php+swoole完爆nodejs
之类的文章来吸引眼球,先不说它的好与坏,单单说他的出现,确实给php注入了一股新的活力。
首先,php是单进程的,没法在一个程序块中使用多进程来处理一个复杂的逻辑,即使后来出现了pcntl_fork
模块来处理多进程,但是它比较鸡肋,并不适用于windows
平台,其实最大的问题是它使用起来非常之复杂和繁琐,难以理解。
其次,php并不支持异步,这一点恰恰是nodejs
平台所擅长的。所以,在处理一些高并发高负载的请求的时候,我们往往会考虑用nodejs
来做。
再者,php并不适合做TCP,socket之类的长连接,第一是性能问题,第二,我个人觉得还是复杂和繁琐,使用起来会非常吃力,特别是对socket, TCP/UDP, 网络IO等底层的东西并不是很熟悉(比如现在的我)的时候,用起来更是吃力。
那么,有没有一种办法,能够让php很好的支持异步、异步、简单的使用tcp/udp/socket服务呢。当当当。swoole应运而生了!!!
1. swoole 简介
官网是:http://www.swoole.com/ ,是大神韩天峰(Rango)
的作品,我有幸在B站的一次技术会议上,见到了大神,很平易近人的一个大叔。
swoole
发音为 死沃尔
, 并不是死喔了
, 官网给它的介绍是:
swoole是PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。
先不说这些玩意儿怎么用,但看这些描述,简直就是吊炸天啊,没swoole之前,基本是在用其他的语言诸如c++
,go
等静态语言来写这些服务了,而现在,phper们,你们完全可以用swoole协助用PHP语言写这些牛逼的玩意了。
2. swoole运行机制
在进行系统的学习swoole之前,先来说下swoole的原理和机制,我觉得知道了会对它有一个大致的了解。
Swoole虽然是标准的PHP扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。而swoole扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后,swoole会自动回调指定的PHP函数。
也就是说,swoole就是个披了php外衣的nginx,大量的功能都是用c来实现。一些功能的调用其实并没php什么事,它只是个纯粹的胶水,有什么功能全用c在实现,然后执行完成再回调给php。
所以,你相当于在用php语法来写底层的c服务,你并不需要了解底层的实现逻辑,你会用php就足够了,因缺思婷~
3. swoole提供的功能库。
在说下swoole提供了哪些功能给我们用,以为我们用到哪些服务时,可以用swoole来帮我们实现。
- [X] http服务 ,编写一个简单的web server。
- [X] TCP/UDP服务 ,编写一个消息接受处理系统。
- [X] 异步,可以异步的处理请求。
- [X] 并发 ,可以并发的处理同一个业务逻辑。
- [X] socket,socket通讯处理技术。
- [X] 毫秒级别定时器,可以在php中使用定时器了。
- [X] 协程,相比线程更稳定和好用。
如果你的业务中,有用到以上等特性,你又在用使用php,那么完全可以用swoole来完成了。
4. swoole安装
swoole的安装相对来说很简单,你完全可以把他当做一个普通的php的扩展来安装。
简单记录下:
pecl安装:
pecl install swoole
源码安装:
git clone https://github.com/swoole/swoole-src.git
cd swoole-src
phpize
./configure
make && make install
Mac下brew安装:
brew install php56-swoole
brew install php70-swoole
我在学习时候,按照的是目前的最新文档版本: 1.8.11-stable
安装好之后呢。如果你还需要对你想对你的编辑器,比如:phpstrom
对swoole的代码提示功能,就可以下载帮助文件:https://github.com/eaglewu/swoole-ide-helper。
下载这个完成之后呢,当你打开一个项目,在External Libraries上就可以打开一个框,然后把下载的提示文件,加进来:
如果,代码提示没生效,可以选中 Src里的所有文件,右建,Mark as Plain Text,就可以了。
OK,一个简单的介绍和安装就到这里了,下面会着重介绍如何使用swoole。
update 2016.11.29
作者更新了新的 ide-helper文件,更加智能好用,可以根据swoole扩展自己去生成ide-helper文档:
git 下载这个:https://github.com/swoole/ide-helper
然后 cd ide-helper &&& sudo php dump.php
会生成 output文件夹,这就是ide帮助文件,按照上面的方式加到ide的扩展包里,写代码就能识别了。而且是最新的代码特性。
swoole深入学习 1. swoole初始相关推荐
- swoole深入学习 2. tcp Server和tcp Client
swoole深入学习 2. tcp Server和tcp Client 标签(空格分隔): swoole 这节来学习Swoole最基础的Server和Client.会通过创建一个tcp Server来 ...
- swoole 要求php版本,swoole哪个版本支持php5
Swoole 2.0正式版发布了.2.0版本最大的更新是增加了对协程(Coroutine)的支持.正式版已同时支持PHP5和PHP7.基于Swoole2.0协程PHP开发者可以已同步的方式编写代码,底 ...
- swoole不是php,Swoole
## Swoole php代码只是个表现形式,程序最终是运行在内存中的进程,内存中一种东西,代码只是一种形式而已. 代码只是一个形式,以一种方式来创建一个运行在内存中的程序,所以Swoole的php脚 ...
- swoole php 使用教程,Swoole 扩展安装与使用入门
Swoole 扩展安装与使用入门 由 学院君 创建于2年前, 最后更新于 1年前 版本号 #3 37642 views 13 likes 5 collects Swoole 概述 Swoole 是面向 ...
- swoole 要求php版本,swoole版本的区别
Swoole 2.0正式版发布了.2.0版本最大的更新是增加了对协程(Coroutine)的支持.正式版已同时支持PHP5和PHP7. 基于Swoole2.0协程PHP开发者可以已同步的方式编写代码, ...
- php如何升级swoole,php如何升级swoole
windows用户可以使用cygwin环境来学习swoole,但是会有很多问题,下面我们主要介绍下linux环境下swoole的安装. php版本推荐php5.4+,当然php7也是没有问题的. (推 ...
- php怎样调用swoole,php如何调用swoole
php如何调用swoole,语言,服务器,服务器端,或更高,客户端 php如何调用swoole 易采站长站,站长之家为您整理了php如何调用swoole的相关内容. 项目中使用的PHP,但由于长耗时的 ...
- ubuntu18.4 安装swoole 和 php 扩展 swoole
2019独角兽企业重金招聘Python工程师标准>>> 首先在确定是否安装pecl和phpize如果未安装 sudo apt install php-pear sudo apt ...
- php cli swoole mysql_[了解实践]Swoole、PHP与MySQL:连接池,swoole扩展实现真正的PHP数据库连接池。...
背景:swoole的出现,包括PHP出现前,在新浪企业邮箱就有基于Sun Solaris 系统上面用c++写Mysql的长连接,那时候的长连接是基于RPC实现,对mysql那一端形成一个远程过程的调用 ...
最新文章
- Winograd,GEMM算法综述(CNN中高效卷积实现)(下)
- SAP MM 公司间STO发货单输出报错 - 合并工厂AUC1和存储位置6002没有货物收货地点 - 之对策
- Linux系统使用apt命令安装java
- golang的bytes.buffer
- 不同编程语言的初心和适用对象
- linux 逻辑卷扩展
- 基于vue 2.X和高德地图的vue-amap组件获取经纬度
- 完善博文 共享内存一写多读无锁实现的代码逻辑部分
- toj 4609 Internal Rate of Return
- bp神经网络预测模型_【2020顶会KDD】AutoST:面向时空预测的高效神经网络学习模型...
- toCharArray()和 charAt()的用法
- Java设计模式(九)责任链模式 命令模式
- Effective C++读书摘要--Implementations二
- javascript面试题(一)
- mysq;多表查询 总结
- 图计算简介和Pregel简介
- mac空格代表图标_最糟糕的图标代表功能
- 批处理PS给相同图片添加不同文字
- 美格智能5G R16模组SRM825N顺利通过国内CCC、SRRC、CTA认证
- 求个人所得税和税后收入
热门文章
- 从决策树学习谈到贝叶斯分类算法、EM、HMM --别人的,拷来看看
- 美团安卓面试,阿里巴巴Android面试都问些什么?含小米、腾讯、阿里
- Android 解决华为虚拟键冲突遮挡底部按钮
- android 临时关闭ZRAM
- 计算机与人工智能学院学生会,人工智能学院召开2020年学生会工作总结大会
- Oracle创建视图,错误ORA-01031: insufficient privileges(权限不足)
- 三星 S4 手机误删除相片(相册)后的恢复问题,仅记录处理过程,其它Android手机同样适用...
- 运维面试基础试题(四)
- Flocking算法0704
- javaweb文件上传下载