做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网别的相干文章!