服务端除了web请求,还有很多需要长时间运行的任务在后台执行。
哪些事情是其它语言能做,php做不了的?
有人说,php基本不会成为服务端的瓶颈。事实如此吗?
已知问题:即使在web前端,连接数是php的一个瓶颈。
还有呢?后台执行的任务也可能是个问题。基于两个原因:1,如果任务依赖于另外一个系统,而依赖的系统处理速度慢,那么在量大的时候会拖累死php进程(尽管做魁祸首不在于php,但是php在同步等待对方系统的响应导致进程阻塞无法继续执行,影响了业务系统的正常工作);2,如果是deamon进程,那么需要应对长时间运行可能出现的问题(mysql,redis,mongo连接,导致进程无法正常工作也无法退出,更不知道是否已经退出)。
另外一个角度来看,如果需要php进程长时间运行,而不允许间断,对于PHPer来说会非常痛苦。对比nginx,区别很明显。
问题1,需要给出php同步执行方案,尤其是在依赖系统很慢的时候;
问题2,php对于进程管理能力很弱。
有三个项目,简称A系统,B系统,C系统
在A系统deamon进程mysql操作异常但仍继续执行,B系统deamon进程mysql连接断开而阻塞无法继续执行,C系统daemon进程mongo连接占满进程内存而自动崩溃,都属于2的范畴;
A系统php进程需要依赖一个超级慢的接口而导致不得不开超级多的php进程来处理,则属于1的范畴。