Home
Document
Q&A
Video
Donate
Source Code
Code-Galaxy 云原生平台
Business
Swoole Tracker
Swoole Compiler
Login
Register
全部
提问
分享
讨论
建议
公告
开发框架
发表新帖
定时器tick函数存在协程api时,下个定时器不会等待前一个执行完成吗?
### 问题描述 下面的代码,每秒钟还是会输出aaa 根据文档说明: 但如果定时器回调函数的执行时间过长,甚至覆盖了下一次定时器执行的时间。底层会进行时间校正,丢弃已过期的行为,在下一时间回调。 ### Swoole版本,PHP版本,以及操作系统版本信息 swoole 4.4.x php7.2.x ### 相关代码 ```php <?php use Swoole\Runtime; Runtime::enableCoroutine(SWOOLE_HOOK_ALL); Swoole\Timer::tick(1000, function(){ echo "aaa\n"; sleep(3); }); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么?
发布于1年前 · 9 次浏览 · 来自
提问
yiyi
### 问题描述 下面的代码,每秒钟还是会输出aaa 根据文档说明: 但如果定时器回调函数的执行时间过长,甚至覆盖了下一次定时器执行的时间。底层会进行时间校正,丢弃已过期的行为,在下一时间回调。 ### Swoole版本,PHP版本,以及操作系统版本信息 swoole 4.4.x php7.2.x ### 相关代码 ```php <?php use Swoole\Runtime; Runtime::enableCoroutine(SWOOLE_HOOK_ALL); Swoole\Timer::tick(1000, function(){ echo "aaa\n"; sleep(3); }); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么?
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
评论
2021-06-02
sff
sleep放echo前面
赞
0
回复
2021-06-03
MARiA
你好,这是我的个人见解。 我想应该是你的sleep时间大于定时器的间隔才会出现每秒钟还是会输出aaa。 而且你开启了Runtime::enableCoroutine(SWOOLE_HOOK_ALL),sleep就变为了一个非阻塞函数,其作用是在3秒后切换协程栈,并执行原本的函数。
赞
0
回复
微信公众号
热门内容
- swoole针对400的请求--TRACE Port_onRead_http() (ERRNO 7102): Bad Request: unknown protocol from session#193 on 0.0.0.0:9505
- http服务中,使用write分段输出文件。设置header总文件长度无用
- 需要用到TCP 异步客户端,官方已经将async模块移出,官方讲可以通过协程进行转化,是否有人可以提供现成示例代码?
- 异步任务 (Task)和go协程分别的应用场景是什么呢?
- swoole的tcp使用PHP如何编写界面并整合?
- Go 微服务开发框架 DMicro 的设计思路
- windows 配置wss链接,链接不成功
- swoole TCP 压力测试出现 Maximum execution time of 30+2 seconds exceeded (terminated),导致php进程奔溃
- 断开连接后的FD 如何才能回收重复利用?需要设置什么?
作者其它话题
- 协程TCP客户端connect域名解析问题
- TCP异步客户端和TCP协程客户端的疑问
- heartbeat_idle_time、heartbeat_check_interval但不触发onclose的必现代码
- 设置了heartbeat_idle_time、heartbeat_check_interval但不触发onclose
- 关于TCP协程客户端的疑问
暂无回复的问答
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 请问那个一键协程化的代码是放外面还是set里面
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。