PHP Swoole学习笔记
有关学习Swoole插件,它为PHP提供了异步处理的笔记。
主要是为了自己,但也可能对他人有用,所以公开出来。
关于Swoole
PHP插件。似乎可以通过Pecl安装。
有很多模块。https://www.swoole.co.uk/docs/module
有TCP、UDP、UnixSocket、HTTP、WebSocket、Redis等等。还提供客户端。是否也有Http/2客户端呢?
还有Linux进程管理器、异步文件IO等等。
好的,我能看到有MySQL和Redis客户端。据说它能够取代mysqlnd和mysqli,这样它就能够完全负责PHP -> C -> MySQL的所有操作了。
安装
听说Pecl现在只支持macOS了。好像得自己下载源码并构建…
如果只是想尝试的话,应该有提供Dockerfile的示例。不知道是否已经上传到Docker Hub了?
https://www.swoole.co.uk/docs/get-started/try-docker
服务器
如果有需要调查的事情,写下来。
目前我不打算替换php-fpm,所以暂时搁置。
事件循环
可以编写事件驱动的处理吗?从示例看,似乎是通过建立Socket连接并进行流处理。
用PHP编写的消息传递工具,可以更容易地实现类似 Kafka 的订阅者吗?
协程
似乎是从某个版本中从Swoole包中拆分出来的。
有一些类似于Go的通道(Channel)的东西,我在网上的示例代码中经常看到这个。它通过go()函数启动了异步处理,还调用了defer函数,看起来很像Go语言。
但是后来我发现go() + Swoole\Event::wait()这种模式已经被废弃了。可能是被Coroutine\run所替代了吧。
也许是因为这个部分被独立出来作为Coroutine,所以建议使用这个函数。
但是我在4.4.0-alpha版本中尝试的时候,却被告知没有Coroutine\Run。这个示例代码是坏掉了吗?
我所感受到的。
由于服务器、TCP/UDP、WebSocket连接、流式传输以及PHP隐藏了进程和内存管理等底层操作,这使得我们无需去碰触(理解)底层操作。要创建高性能应用程序,PHP工程师必须掌握这些知识。这种态度可以让他们意识到,在那些对性能要求很高的场景中是否适合使用PHP。