php为何不支撑按时器?
做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为什么不支撑按时器?的具体内容,更多请关注百分百源码网其它相关文章!