2016-07-23 159 views
1

您好请问我该如何解决这个错误?致命错误:允许内存大小为25165824字节耗尽

Fatal error: Allowed memory size of 25165824 bytes exhausted

我遇到的问题是,当我试图从网站得到一个大文件的内容

我的官方代码:

<?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); 
} 

?> 

我已经读了一些东西,但没有得到解决。 请帮助我。

+1

请不要滥用该片段工具 –

+0

如果答案已解决您的问题,请点击复选标记以考虑[接受它](http://meta.stackexchange.com/q/5234/179419)。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。请注意,没有义务这样做。 – pah

回答

1

您正在获取巨大的资源并将其存储到变量中,然后将其刷新到文件中。

所以,让我们说,你php.ini文件,您对以下的内存限制配置:

memory_limit = 24M 

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

您可以使用cURL将资源内容直接写入文件中。见this answer。相关卷曲选项来做到这一点是:

curl_setopt($ch, CURLOPT_FILE, $out); 

注意$out是你的文件指针,所以你需要设置这个选项之前调用fopen()

+1

这个答案是彻底和有效的。 –

相关问题