一键协程化

作用: 相对于 Swoole1.x,Swoole4+ 提供了协程这个大杀器,所有业务代码都是同步的,但底层的 IO却是异步的,保证并发的同时避免了传统异步回调所带来的离散的代码逻辑和陷入多层回调中导致代码无法维护

之前解决方案:

针对每种类型的客户端都做了一个协程客户端

3 个问题:

  • 实现复杂,每个客户端细枝末节的协议都很复杂,想都完美的支持工作量巨大。
  • 用户需要更改的代码比较多,比如原来查询 MySQL 是用的 PHP 原生的 PDO,那么现在需要用
    Swoole\Coroutine\MySQL 的方法。
  • 我们很难覆盖到所有的操作,比如 proc_open()、sleep() 函数等等也可能阻塞住导致程序变成同步阻塞的。
现在解决方案

采用 Hook 原生 PHP 函数的方式实现协程客户端,通过一行代码就可以让原来的同步 IO 的代码变成可以协程调度的异步IO,即一键协程化。

当前可以一键协程的函数和扩展
  • redis 扩展
  • 使用 mysqlnd 模式的 pdo_mysql、mysqli 扩展,如果未启用 mysqlnd 将不支持协程化
  • soap 扩展
  • file_get_contents、fopen
  • stream_socket_client (predis、php-amqplib)
  • stream_socket_server
  • stream_select (需要 4.3.2 以上版本)
  • fsockopen
  • proc_open (需要 4.4.0 以上版本)
  • curl
当前不能一键协程的函数和扩展
  • mysql:底层使用 libmysqlclient
  • mongo:底层使用 mongo-c-client
  • pdo_pgsql
  • pdo_ori
  • pdo_odbc
  • pdo_firebird

详细可以参考:官方的一键协程化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值