【发布时间】:2020-11-28 06:38:50
【问题描述】:
当通过pcntl_fork 分叉时,我看到了奇怪的行为。
一个正在运行的守护进程的简单脚本
pcntl_fork();
while (true) {
sleep(1);
}
可以看出,子进程占用的内存少了大约三分之一。如果你再深入一点,比较两个进程的pmap -x 1172 1173 的输出,我们会看到下图
如果我理解正确,那么在启动时 PHP 会为自己以及它的所有模块分配内存,并且这个余量非常重要,特别是如果您在一个实例上运行了许多守护程序。
事实证明,您可以通过一种巧妙的方式减少守护程序的内存使用量。
if (pcntl_fork() > 0) {
die();
}
while (true) {
sleep(1);
}
这里可能有什么问题?只是你必须在必要时花时间分配内存?
【问题讨论】: