php为什么不支持定时器?-php教程

资源魔 32 0
常见的按时器有两种:一种周期性按时执行,例如天天的清晨三点出报表;另外一种正在指按时间后执行(一次),例如会员登录零碎五分钟后发放逐日登录处分。两种状况对应shell中的cron以及at饬令,与JavaScript中的setInterval以及setTimeout函数相似(严格来讲setInterval是周期性执行,指按时间点执行需求自行解决)。

做web开发的PHP顺序员对JavaScript中的两个按时器函数应该都还相熟,回到PHP层面就有点傻眼:

PHP中有sleep,然而不(内置)按时器函数可用。sleep函数委曲能够做到,但会招致过程梗阻,时期不克不及做其余事(或无呼应)。为何PHP没能提供按时器(Timer)这个性能呢?

缘由

集体以为,web开发中PHP不克不及应用按时器的实质缘由是可控 常驻内存运转环境的缺失。两个要点:第一常驻内存,第二可控。CGI模式下,过程执行完剧本后间接加入,不克不及指望其到指按时间运转义务;PHP-FPM模式下,过程(绝年夜少数)常驻内存,但不成控。

不成控的意义是执行PHP的过程没有受PHP代码影响,过程的入口点以及加入机遇由额定的顺序管制。例如FPM模式下,PHP剧本中的exit、die函数只中缀剧本的执行,没有会对执行剧本的过程孕育发生特地的影响(内存泄漏除了外)。PHP开发职员编写的剧本是过程的执行体,执行终了后就从过程的执行上下文中卸载进来。这类状况下,执行PHP剧本的机遇依然由内部驱动,不内部申请PHP代码就安详的躺正在硬盘上,甚么都没有做,也就按时义务。

因为PHP次要面向web开发,PHP这类执行模式稳固牢靠,开发效率快。比方省去资本开释这一步,就防止了开发中不少工作量以及坑。想一想某些第三方库代码中改时区、字符编码等还没有复原,正在常驻内存运转环境下简直一定会招致后续申请有成绩。但正在FPM模式下,这类坑有意中间接趟平,省去许多调试工夫,为顺序员保住发际线做出了没有小的奉献。

以上就是php为何没有支持按时器?的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学 定时器

抱歉,评论功能暂时关闭!