致命错误:允许的内存大小为25165824字节

时间:2016-07-23 15:03:25

标签: php curl

您好我可以如何修复此错误?

  

致命错误:允许的内存大小为25165824字节耗尽

我遇到的问题是当我尝试从网站上获取大文件的内容时

我的官方代码是:

<?php

//begin
$ch = curl_init();
curl_setopt($ch, CURLOPT_BUFFERSIZE, 8096);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, 'http://softnet.co.tz/cms/scripts/here.txt');

$content = curl_exec($ch);

curl_close($ch);

$out = fopen('result.txt', 'a');
if ($out) {
    fwrite($out, $content);
    fclose($out);
}

?>

我已经读过一些东西,但没有解决。 请帮我。

2 个答案:

答案 0 :(得分:2)

您需要获取大量资源并将其存储到变量中,然后再将其刷新到文件中。

所以,让我们在您的php.ini文件中说明您有以下内存限制配置:

memory_limit = 24M

这意味着您将PHP请求可以使用的内存量限制为24 MB主内存(25165824字节)。因此,如果您获取并存储到变量$content中的资源超过此大小,则请求将因该错误而失败。

您可以使用cURL将资源内容直接写入文件。见this answer。执行此操作的相关cURL选项是:

curl_setopt($ch, CURLOPT_FILE, $out);

请注意,$out是您的文件指针,因此您需要在设置此选项之前调用fopen()

答案 1 :(得分:0)

在发生类似错误的情况下,我正在使用PHP Curl库将少量数据发布到远程服务器。此“内存耗尽”错误是由远程服务器尝试写入不存在的目录引起的。创建目录时,不再发生错误。