我在某PHP大牛上面看到这样一段话:
我之前的文章中说过,大多数网站的性能瓶颈不在PHP服务器上,因为它可以简单地通过横向增加服务器或CPU核数来轻松应对(对于各种云主机,增加VPS或CPU核数就更方便了,直接以备份镜像增加VPS,连操作系统、环境都不用安装配置),而是在于MySQL数据库。如果用 MySQL 数据库,一条联合查询的SQL,也许就可以处理完业务逻辑,但是,遇到大量并发请求,就歇菜了。如果用 NoSQL 数据库,也许需要十次查询,才能处理完同样地业务逻辑,但每次查询都比 MySQL 要快,十次循环NoSQL查询也许比一次MySQL联合查询更快,应对几万次/秒的查询完全没问题。如果加上PHP多线程,通过十个线程同时查询NoSQL,返回结果汇总输出,速度就要更快了。我们实际的APP产品中,调用一个通过用户喜好实时推荐商品的PHP接口,PHP需要对BigSea NoSQL数据库发起500~1000次查询,来实时算出用户的个性喜好商品数据,PHP多线程的作用非常明显。
我的理解是这样的.PHP与MYSQL结合的话,根本用不了多线程或者多进程的这样的东西.
因为一个sql查询,只可能在一个进程里面.
而nosql不一样了.我可以讲很复杂的查询分成10个小查询,用每个单独的线程去查询nosql再汇总..就比使用一个现程或者进程快.
还有一种多进程的使用场景是不是日志系统?
那么多进程,运行的信息肯定要写在一个日志文件里面.
就要考虑读写的同步了.
那么问题来了:
1 .挖掘机学校哪家强?
2 .PHP在什么情况下需要使用到多进程(多线程)?
3 .PHP在什么情况下需要考虑到多进程(多线程)读写的同步呢(比如日志系统)?
还有一个问题,我现在感觉到了一丝迷惑.就是假设用户上传了一张图片,其他用户来访问.那么就有很多的PHP进程来读这张图片.是不是当一个进程在读的时候,另外的进程就要等待了?
那比如我的PHP有一万个进程,那等1000个进程读这个文件的时候,用户不就等了很长时间吗??
服务器的资源都是共用的,那么多PHP进程来读他,怎么还那么快呢??
不知道你引用的文章是哪里的,我并不同意其中的观点,因此我们先说你引用的片段中描述的观点有什么问题:
然后关于 PHP 与多线程:
严格来说 PHP 的多线程指的应该是 pecl 中的 pthreads. 这个东西很少有人会用到,我也不建议大家用,因为通常情况需要用到 pthreads 的时候通常是这个工作不适合 PHP 来做。
如果说 PHP 和多线程有什么关系,那就是 PHP 不同于其他的一些后端语言,通常 PHP 的运行环境是由 PHP-FPM 管理的若干个独立的 PHP 进程组成的。因此 PHP 天然地可以非常方便地横向扩充:增加 PHP-FPM 的进程数,甚至把 PHP-FPM 分散在两台服务器上。
所以说了这么多,你的两个问题无从谈起了...