序言
好久不更博客了,我几乎都忘记了这个博客的存在了。就在上周无意间登录以后,发现好多人咨询我关于之前博客的问题。吓得我虎躯一震,卧槽?真的有人看。。。非常抱歉,没有及时回复那些人,我真的都忘记这回事了。以后我会不定期登录来看一下的。
这次我来记录一下关于swoole+ThinkPHP系列的教程,我很自信这一系列会完整的,因为我已经在公司内部的文档里写完了,现在是在复制。哈哈~~
为什么使用Swoole?
最近系统里在跑一些统计类的算法时,由于耗时比较长,经常出现浏览器与服务器断开连接,导致数据出错的问题。为了解决这个问题,我们决定让浏览器与服务器建立长连接,服务器计算完成以后通知浏览器显示计算结果,仅此而已。
因为我最闲,所以这个工作就交给我了。我四处去找PHP长连接的东西,最后发现了两个框架,一个是workerman,另一个是swoole。你要是问我这两个有什么区别?我只能说我没用过workerman,没法评价呀。但是你要是问我为什么用swoole,我会告诉你,兄弟,我被韩老大在知乎上回答的一句话给忽悠来了:Swoole是给高手用的,门槛比较高,需要使用者有深厚的功底。
什么是Swoole?
以下摘自swoole官网:
Swoole®:重新定义PHP
PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。
除了异步IO的支持之外,Swoole为PHP多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大简化多进程并发编程的工作。其中包括了并发原子计数器,并发HashTable,Channel,Lock,进程间通信IPC等丰富的功能特性。
Swoole2.0支持了类似Go语言的协程,可以使用完全同步的代码实现异步程序。PHP代码无需额外增加任何关键词,底层自动进行协程调度,实现异步。
总的来说就是很强大很牛逼。
但是使用起来坑也很多。。。
听我慢慢讲。。。