首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用CLI与Curl时的Php内存使用情况

使用CLI与Curl时的Php内存使用情况
EN

Stack Overflow用户
提问于 2011-08-24 03:05:17
回答 2查看 676关注 0票数 1

因此,我尝试以两种不同的方式执行脚本:

1)

代码语言:javascript
运行
复制
foreach($result_array as $arg){  
    exec("/usr/bin/php pathToScript firstArg $arg", $array);                
    echo "peak usage: " . memory_get_peak_usage() . "\n\r";  
}

结果:

峰值使用率: 5457324

峰值使用率: 7791212

PHP致命错误:允许的内存大小为33554432

2)

代码语言:javascript
运行
复制
    foreach($result_array as $arg){
        curl_file_get_contents("website?query=$arg"); //just a cURL helper function
        echo "peak usage: " . memory_get_peak_usage() . "\n\r";
}

结果:

峰值使用率: 5241708

峰值使用率: 5241708

峰值使用率: 5241708

峰值使用率: 5241708

峰值使用率: 5241708

峰值使用率: 5241708

..。你明白我的意思了

我肯定搞错了exec()使用内存或操作的方式。我的印象是,当使用exec()派生程序时,调用脚本的内存需求不会受到影响……然而,情况似乎并非如此。

谁能解释一下这里发生了什么,好让我知道发生了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-24 03:23:42

CURL版本没有保存响应(curl_file_get_contents的输出),但是exec版本是通过将内容附加到exec$array的第二个参数来保存的

http://us2.php.net/manual/en/function.exec.php

如果存在输出参数,则将使用命令的每一行输出填充指定的数组。此数组中不包括尾随空格,例如\n。注意,如果数组已经包含一些元素,exec()将附加到数组的末尾。如果您不想让函数附加元素,请在将其传递给exec()之前对数组调用unset()。

发生的情况是,每个响应都被附加到相同的数组中,从而增加了程序的内存使用量。

票数 1
EN

Stack Overflow用户

发布于 2011-08-24 03:14:40

curl请求可能正在执行一个完全成熟的HTTP请求,因此被请求的脚本是作为某个完全独立的The服务器进程的子进程运行的。该子PHP进程的内存使用量将计入处理curl请求的HTTP进程,而不是您的脚本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7166194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档