2016-07-23 35 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のオプションは次のとおりです。

curl_setopt($ch, CURLOPT_FILE, $out); 

$outがあなたのファイルポインタなので、このオプションを設定する前fopen()を呼び出す必要があること。

+1

この回答は徹底的で有効です。 –

関連する問題