gpt4 book ai didi

php - memory_limit : How does it work?

转载 作者:IT王子 更新时间:2023-10-28 23:34:47 25 4
gpt4 key购买 nike

我有一个运行大约 2 小时的 php 脚本。这是一项 cron 工作。 cron 作业每 4 小时运行一次。

在脚本的最后,我显示了一些内存值。

The memory_get_usage() result is 881568 Bytes (0.840766906738M)
The memory_get_peak_usage() result is 1340304 Bytes (1.27821350098M)
The memory_get_usage(true) result is 1572864 Bytes (1.5M)
The memory_get_peak_usage(true) result is 1835008 Bytes (1.75M)

php.ini 中的 memory_limit 是 128M,但它不起作用。我将它提高到 256M,现在它可以工作了。

但是由于脚本的内存峰值小于2M....

那么memory_limit参数是如何工作的呢?

是脚本使用的总内存吗?如果是,我该如何计算?

是脚本的内存峰值吗?如果是这样,我计算对了吗?

我使用的是 php 5.3.16。

编辑

我没有任何错误消息。当限制为 128M 时脚本执行,但从未完成。

最佳答案

尝试使用使用您的操作系统来报告实际内存的函数,例如这个。

function unix_get_usage() { 
$pid = getmypid();
exec("ps -o rss -p $pid", $output);
return $output[1] *1024;
}

function windows_get_usage(){
$output = array();
exec('tasklist /FI "PID eq '.getmypid().'" /FO LIST', $output );
return preg_replace( '/[^0-9]/', '', $output[5] ) * 1024;
}

您的脚本可能会消耗大量内存,而 PHP 在从 memory_get_usage()(顺便说一下查看堆)返回时不会考虑这些内存。在调用和返回 memory_get_usage() 时,堆栈分配的变量将被清除。

您还应该尝试在执行期间的其他点运行此函数和其他函数,例如在大的 MySQL 调用或文件处理之后。 memory_get_peak_usage() 可能不适用于所有操作系统,尤其是取决于编译选项。

关于php - memory_limit : How does it work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12302446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com