首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么php在setitimer中使用ITIMER_PROF而不使用ITIMER_REAL?

为什么php在setitimer中使用ITIMER_PROF而不使用ITIMER_REAL?
EN

Stack Overflow用户
提问于 2014-02-17 18:49:34
回答 1查看 426关注 0票数 1

Linux (Max_execution_time)和set_time_limit是通过在setitimer中使用ITIMER_PROF实现的,而不是ITIMER_REAL。通过谷歌,我在php.net上找到了一条关于https://bugs.php.net/bug.php?id=65596这个问题的帖子。与PHP手册http://php.net/manual/en/function.set-time-limit.php说明有关

set_time_limit()函数和配置指令max_execution_time只影响脚本本身的执行时间。在确定脚本运行的最大时间时,不包括在脚本执行之外发生的任何活动,例如使用system()、流操作、数据库查询等的系统调用。在测量到的时间是真实的Windows上,这不是真的。PHP似乎是为使用ITIMER_PROF而设计的。

我想知道为什么PHP机制是以的方式设计的,如果我在zend/zend_API.c中将ITIMER_PROF改为ITIMER_REAL,那么会出现什么副作用呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-16 11:05:02

他们这样做是为了便于携带。

由于ITIMER_REAL发送SIGALRM信号而不是SIGVALRMSIGPROF信号,一些SAPI和SIGPROF中断了。

我认为副作用是不成熟的脚本终止和与一些SAPI(如Apache + mod_php )的不兼容。

一些unices还在SIGALRM (2)上使用SIGALRM(2),而php的that ()函数使用SIGALRM函数,这将是另一个副作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21836971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档