【问题标题】:memory allocation issue after increase the memory limit增加内存限制后的内存分配问题
【发布时间】:2023-03-30 07:08:01
【问题描述】:

我在我的脚本中使用这个 API (https://api.ssactivewear.com/v2/products/):

ini_set('memory_limit', "300M");
$uri=$end_url.$method;
$ch = curl_init($uri);
$access_key=base64_encode($customer_number.':'.$api_key);
curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Authorization: Basic ' . $access_key ) );
curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$retrive_response = curl_exec($ch);
curl_close($ch);
return $retrive_response;

执行几次脚本后,我收到了一个错误

致命错误:允许的内存大小为 314572800 字节已用尽(尝试分配 161956814 字节)

【问题讨论】:

  • 你可以使用'echo ini_get("memory_limit"); 来检查内存限制是否真的增加了。请参阅相关帖子stackoverflow.com/questions/5061917/… 还要确保它在您的脚本之上,并记住增加仅适用于运行脚本

标签: php memory-management out-of-memory memory-limit


【解决方案1】:

您的脚本似乎需要超过 300M 的内存。试试

ini_set('memory_limit', "600M");

【讨论】:

  • 我已经将内存从 166 增加到 256 到 300 并且面临问题。致命错误:允许的内存大小为 268435456 字节已用尽(尝试分配 161985171 字节)
  • @NeerajMahajan 在带有curl_exec 的行之前添加echo memory_get_usage(); exit();。您将知道已经使用了多少内存。然后在脚本末尾尝试相同的操作,但不要使用curl_exec。它可以帮助您确定脚本的哪一部分消耗了所有内存。如果该值较小,则curl_exec 需要更多内存。一次又一次地增加它。
  • 当在 curl_exec 之前添加 echo memory_get_usage(); die('t'); 的结果是 3978256 并且在 curl_exec 之后添加结果是`致命错误:内存不足(分配 166199296)(试图分配 161956783 字节)`
  • @NeerajMahajan 哪一行代码触发了错误? $retrive_response = curl_exec($ch);这个?
  • 当我放置代码时 echo memory_get_usage();饮食'); curl_exec($ch) 之后显示致命错误 Out of memory (allocated 166199296) (试图分配 161956783 字节)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2023-03-22
  • 2019-02-19
  • 2019-03-13
  • 2023-03-09
  • 2014-04-24
相关资源
最近更新 更多