【问题标题】:PHP exec() use of memoryPHP exec() 使用内存
【发布时间】:2012-07-02 18:59:05
【问题描述】:

我似乎无法为这个问题找到明确的答案。

从 PHP 中使用 exec() 调用 shell 命令时,shell 命令使用的内存是否计入 PHP 脚本给定的内存限制?

我意识到如果该命令生成大量输出,并且该输出被捕获在exec()$ouput(第二个)参数中,那么返回的数据可能会破坏 PHP 内存限制。但是,假设所有输出都发送到一个文件中,如果exec()命令需要128M内存才能运行,那么内存限制为64M的PHP脚本是否能够运行呢?

<?php
exec('command_using_128M_memory >/dev/null 2>&1');

我假设 PHP5.3+

【问题讨论】:

    标签: php memory exec


    【解决方案1】:

    exec() 命令不直接计入 PHP,因为该进程是单独执行的,而不是在 PHP 进程中执行的。话虽如此,如果您在命令中使用任何输出变量,它们将计入限制。

    因此,如果您有一个产生大量详细日志记录的文件,并且您正在捕获该日志记录,那么它将计入内存限制。

    【讨论】:

    • 谢谢。我怀疑可能是这种情况,但在依赖它之前需要确定。我猜 PHP 会跟踪 it 直接分配给脚本的内存,但并不关心任何子进程为自己请求的内存。
    • 我不太确定这是否正确。我使用 exec() 使 PHP 内存不足,但没有指定返回值。
    猜你喜欢
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多