PHP定时器具体实现如何操作为长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1700个文字,预计阅读时间需要7分钟。
目录+前言+原因+危险的做法+正确的姿势+CLI模式+总结+前言+常见的定时器有两种:一种为周期性执行,例如每天凌晨三点报告报表;另一种在指定时间后执行一次,例如员工登录时触发。
目录
- 前言
- 原因
- 危险的做法
- 正确的姿势
- CLI模式
- 总结
前言
常见的定时器有两种:一种周期性定时执行,例如每天的凌晨三点出报表;另一种在指定时间后执行(一次),例如会员登录系统五分钟后发放每日登录奖励。两种情况对应shell中的cron和at命令,与JavaScript中的setInterval和setTimeout函数类似(严格来说setInterval是周期性执行,指定时间点执行需要自行处理)。
做web开发的PHP程序员对JavaScript中的两个定时器函数应该都还熟悉,回到PHP层面就有点傻眼:PHP中有sleep,但是没有(内置)定时器函数可用。sleep函数勉强可以做到,但会导致进程阻塞,期间不能做其他事(或无响应)。为什么PHP没能提供定时器(Timer)这个功能呢?
原因
个人认为,web开发中PHP不能使用定时器的本质原因是可控 常驻内存运行环境的缺失。两个要点:第一常驻内存,第二可控。CGI模式下,进程执行完脚本后直接退出,不能指望其到指定时间运行任务;PHP-FPM模式下,进程(绝大多数)常驻内存,但不可控。
本文共计1700个文字,预计阅读时间需要7分钟。
目录+前言+原因+危险的做法+正确的姿势+CLI模式+总结+前言+常见的定时器有两种:一种为周期性执行,例如每天凌晨三点报告报表;另一种在指定时间后执行一次,例如员工登录时触发。
目录
- 前言
- 原因
- 危险的做法
- 正确的姿势
- CLI模式
- 总结
前言
常见的定时器有两种:一种周期性定时执行,例如每天的凌晨三点出报表;另一种在指定时间后执行(一次),例如会员登录系统五分钟后发放每日登录奖励。两种情况对应shell中的cron和at命令,与JavaScript中的setInterval和setTimeout函数类似(严格来说setInterval是周期性执行,指定时间点执行需要自行处理)。
做web开发的PHP程序员对JavaScript中的两个定时器函数应该都还熟悉,回到PHP层面就有点傻眼:PHP中有sleep,但是没有(内置)定时器函数可用。sleep函数勉强可以做到,但会导致进程阻塞,期间不能做其他事(或无响应)。为什么PHP没能提供定时器(Timer)这个功能呢?
原因
个人认为,web开发中PHP不能使用定时器的本质原因是可控 常驻内存运行环境的缺失。两个要点:第一常驻内存,第二可控。CGI模式下,进程执行完脚本后直接退出,不能指望其到指定时间运行任务;PHP-FPM模式下,进程(绝大多数)常驻内存,但不可控。

