我似乎找不到这个问题的明确答案。
当从 PHP 使用 exec()
调用 shell 命令时,shell 命令使用的内存是否计入 PHP 脚本给定的内存限制?
我意识到,如果该命令生成大量输出,并且该输出在 exec()
的 $ouput
(第二个)参数中捕获,则返回数据可能会破坏 PHP 内存限制。但是,假设所有输出都发送到一个文件,如果 exec()
命令需要 128M 的内存才能运行,那么一个限制为 64M 内存的 PHP 脚本是否能够运行它?
<?php
exec('command_using_128M_memory >/dev/null 2>&1');
我假设 PHP5.3+
最佳答案
exec()
命令不直接计入 PHP,因为该进程是单独执行的,而不是在 PHP 进程中执行。话虽如此,如果您在命令中使用任何输出变量,它们都会计入限制。
因此,如果您有一个产生大量详细日志记录的文件,并且您正在捕获该日志记录,它将计入内存限制。
关于PHP exec() 使用内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291615/