swoole 2.* 使用注意事项一

5 篇文章 0 订阅
1 篇文章 0 订阅

昨晚听群友说由于不注意看swoole文档,导致挖出大坑,项目进度变得紧张。我也一直使用的是1.X版本,到目前还未使用2.X,听到网友这么说,也算给自己上了一堂课。

了解情况是这样,群友使用的是swoole2.* 版本, 使用了扩展函数作为回调(1.X版本没有问题),最新协程版本(2.X)还不支持,导致问题的出现。

swoole 官方也在文档标出,使用协程Server编程须知

https://wiki.swoole.com/wiki/page/853.html

禁止使用协程 API 的场景

ZendVM中魔术方法、反射函数、call_user_funccall_user_func_array是由C函数实现的,并未opcode,这些操作可能会与Swoole底层的协程调度发生冲突。因此严禁在这些地方使用协程的API。请使用PHP提供的动态函数调用语法来实现相同的功能。

禁止使用协程的场景

  • __get
  • __set
  • __call
  • __callStatic
  • __toString
  • __invoke
  • __destruct
  • call_user_func
  • call_user_func_array
  • ReflectionFunction::invoke
  • ReflectionFunction::invokeArgs
  • ReflectionMethod::invoke
  • ReflectionMethod::invokeArgs
  • array_walk/array_map

字符串函数

错误的代码
$func = "test";
$retval = call_user_func($func, "hello");
正确的代码
$func = "test";
$retval = $func("hello");

对象方法

错误的代码
$retval = call_user_func(array($obj, "test"), "hello");
正确的代码
$method = "test";
$retval = $obj->$method("hello");


目前swoole 描述的坑分享比较少,所以我就把网友这个坑拿出来分享, 由于swoole2.X 出来不久,所以使用前还是建议多看文档和官方的注意事项。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值