旗下导航:搜·么
当前位置:网站首页 > PHP教程 > 正文

php为何不支持定时器?【php教程】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP教程浏览:80


导读:罕见的定时器有两种:一种周期性定时实行,比方天天的凌晨三点出报表;另一种在指定时候后实行(一次),比方会员登录体系五分钟后发放逐日登录嘉奖。两种状况对应shell中的cron和at...
罕见的定时器有两种:一种周期性定时实行,比方天天的凌晨三点出报表;另一种在指定时候后实行(一次),比方会员登录体系五分钟后发放逐日登录嘉奖。两种状况对应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为何不支持定时器?的细致内容,更多请关注ki4网别的相干文章!

标签:php定时器