前言
在之前的版本中,编写Cli命令行脚本中使用异步或协程功能时,Swoole会自动在脚本末尾检测是否有Event::wait()调用,如果没有,底层会自动调用register_shutdown_function在脚本结束时调用Event::wait(),进入事件循环。
这个特性为底层带来了非常多的麻烦,我们不得不做了大量编码工作,以解决带来的问题。即便如此,仍然存在大量潜在的风险,如某些PHP版本下内存泄露,某些特殊用法导致core dump等。在最新的Swoole 5版本中,我们准备抛弃这个历史包袱。不再自动添加 Event::wait() 到PHP的shutdown function列表。
Server、Process、Process\Pool相关程序请忽略此更新
错误实例
go(function () { Co::sleep(1); echo "done\n"; });
此代码中没有在脚本末尾添加Swoole\Event::wait(),底层会自动注册到shutdown function列表中。相当于:
register_shutdown_function(function () { Swoole\Event::wait(); }); go(function () { Co::sleep(1); echo "done\n"; });
在shutdown阶段处理程序逻辑会带来很多额外的维护性难题。
正确实例
在Swoole 4.4或Swoole 5版本中,建议:
$scheduler = new Coroutine\Scheduler; $scheduler->add(function () { Co::sleep(1); echo "Done.\n"; }); $scheduler->start();
推荐使用
或者:
go(function () { Co::sleep(1); echo "done\n"; }); Swoole\Event::wait();
不推荐使用
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。
我有一个窗口窗体有一个按钮,当按钮被点击时,它动态生成控件,也有一个按钮被添加,这样它就会删除在行的控件,意味着在按钮旁边,当按钮被点击时,一行控件将被删除。我的代码是 我的错误是什么,但问题是它dosnt删除所有的控件,它留下控件,我不知道什么问题,我的代码简单容易,但我不知道哪里缺乏
本文向大家介绍详解原生JS动态添加和删除类,包括了详解原生JS动态添加和删除类的使用技巧和注意事项,需要的朋友参考一下 由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类 添加和和删除类有三种方法 首先等到一个 dom 对象(也叫dom元素), 通过document.getElement……的几种方法得到 如
本文向大家介绍详解前端自动化工具gulp自动添加版本号,包括了详解前端自动化工具gulp自动添加版本号的使用技巧和注意事项,需要的朋友参考一下 之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查了资料,发现gulp还可以自动添加版本号,这个功能就为我平时在更新css或js时老是在客户端存在缓存导致更新后的效果
好好信任你们。 我的web应用程序运行在tomcat 6.0.43上,不使用apache或nginx。 我已经强制我的网络从超文本传输协议重定向到https使用: URL重定向到/webapps/ROOT/index。jsp
我有几个spring boot应用程序,我想在其中放置一个自定义注释(在一些bean中)。注释将有一个字段(例如propertyValue)。我希望将该值作为新PropertySource的一部分添加到环境中。 我的想法是创建一个将注入环境的bean,然后向其中添加一个新的PropertySource。缺少的部分是如何将自定义注释与这个bean连接起来。 有什么想法吗?
除了通过"allAutoDetected"权限让Chrome应用自动查找媒体库外,也可以让用户手动添加或者移除媒体库。 在上一节中我们调用getMediaFileSystems方法时,将其参数中的interactive指定为了if_needed,如果将其指定为yes则会出现一个弹出让用户选择保留的媒体库或者添加其他媒体库: 媒体库选择弹窗 如果只想单纯提供添加其他位置的功能,可以使用addUser