您好我可以如何修复此错误?
致命错误:允许的内存大小为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);
}
?>
我已经读过一些东西,但没有解决。 请帮我。
答案 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库将少量数据发布到远程服务器。此“内存耗尽”错误是由远程服务器尝试写入不存在的目录引起的。创建目录时,不再发生错误。