首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >php使用singal为什么需要使用declare(ticks=n)语句?

php使用singal为什么需要使用declare(ticks=n)语句?

作者头像
友儿
发布2022-09-11 10:29:29
发布2022-09-11 10:29:29
4850
举报
文章被收录于专栏:友儿友儿

既然系统内核都提供了完整的signal的机制,第一想到的是,pcntl拓展要实现php的signal-api, 其直接将php方法与底层的singnal函数绑定就能实现了,不是吗? (以下对于该问题的答案纯属个人思考)

答案是否定的,从上面Linux中的signal机制可知道,其机制是针对C语言等强语言的,其对代码的中断造成对变量的影响是可控的。

但是对于PHP这样的脚本语言,一个语句底下可能是n句c语言执行,或者n+m句机器指令,如果在一条语句的执行过程中运行php的signal函数,那么很可能引起php的奔溃;

那么pcntl拓展怎么解决这个问题了,自然就会想到,如果信号来了先做标记,再等一句完整的php语句执行完了,然后再调用使用pcntl_signal注册的php回调函数,这样就保证了php环境的安全性。

而php中declare(ticks=n)和register_tick_function(‘handel_function’)就提供了这样的功能;

为了保证php环境的安全性和稳定性,所以pcntl拓展在实现signal上使用了“延后执行”的机制;因此使用该功能时,必须先使用语句declare(ticks=1),否则注册的singal-handel就不会执行了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档