我pcntl_fork在PHP中感到困惑.
我认为它确实是多线程的,但它是如何工作的,我将如何在脚本中使用它?
PHP的pcntl_fork函数应该像C中的标准fork函数一样分叉一个进程.
但是我想知道这个函数是否真的要求进程,或者它是否以不同的方式模拟该行为.
如果它确实要求进程,那么很清楚哪个进程是:Apache的子进程之一.
只要Apache使用prefork MPM(即每个请求一个进程),这就没问题.
但是如果Apache使用worker MPM会发生什么?
当使用worker MPM时,每个Apache子进程都包含许多线程,每个线程处理不同的HTTP请求.因此,如果您在这种情况下分叉进程,我甚至无法想到所有这些线程和请求所发生的情况.
因此,如果pcntl_fork()确实要求进程,那么我认为如果将Apache设置为使用worker MPM,则使用此函数并不是一个好主意.
专家说什么?我推理得好,还是我只是胡说八道?