PHP是单线程仍是多线程?

      PHP 从设计之初到流行起来都没有出现明显须要用多线程才能解决的需求。某些须要用到多线程的地方也有相应的解决方案和替代方案。多线程并不老是比单线程优,多线程可能会引入其余问题(例如:两个线程同时调用一个类里的同一个方法时,可能出现死锁的状况)。php


      你能够这样理解 对应一个客户的一个页面请求处理的php 是单线程处理的, 这样一来就能够自上而下的去编辑/理解代码中的业务逻辑了, 可是 php 能够同时开不少线程来处理 不少用户请求的同一个PHP , 因此 php 也能够当作是"多线程"的。数据库

      每一个PHP文件的执行是单线程的,可是,服务器(apache/nigix/php-fpm)是多线程的。每次对某个PHP文件的访问服务器都会建立一个新的进程/线程,用来执行对应的PHP文件。apache


       也就是说对于一个请求来讲PHP是单线程的,可是多个请求间是并发的。服务器


       其实通常写 PHP 程序认为是单线程的就能够了。多个请求之间相互的关系就是,有些时候读写数据库,文件,session等会加锁,会致使后面的请求挂起等待前面的请求执行完才继续。session


       至于协程,只能说是一种新的程序执行流程(旧的是顺序,判断,循环),本质是也是单线程的多线程

       因此准确的说php是单线程的,必定程度上也能够当作是“多线程”!!!并发