330

このエラー メッセージが表示されています。何か提案はありますか?

PHPで33554432バイトの許容メモリサイズが使い果たされました(43148176バイトを割り当てようとしました)

4

25 に答える 25

375

ついに私は答えを見つけました:

phpファイルでエラーが発生する行の前にこの行を追加するだけです

ini_set('memory_limit', '-1');

サーバーのメモリ使用量は無制限になり、正常に動作しています。

安全なメモリ使用'44M'の代わりに検討してください。'-1'

于 2009-01-10T03:38:18.773 に答える
69

共有ホスティングの制限を引き上げる 2 つの簡単な方法を次に示します。

  1. PHP.ini ファイルにアクセスできる場合は、PHP.ini の行を変更します。行に 32M と表示されている場合は、64M を試してください。 memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)

  2. PHP.ini にアクセスできない場合は、これを .htaccess ファイルに追加してみてください。 php_value memory_limit 64M

于 2011-03-10T01:52:12.460 に答える
52

スクリプトがメモリを使いすぎています。これは、制御不能なループがあり、ループの各パスでオブジェクトを作成したり、配列に追加したりする場合に、PHP でよく発生する可能性があります。

無限ループをチェックします。

それが問題でない場合は、終了したオブジェクトを null に設定して破棄することで、PHP を助けてみてください。例えば。$OldVar = null;

エラーが実際に発生するコードも確認してください。その行が大量のメモリを割り当てていると思いますか? そうでない場合は、何が問題なのかを調べてみてください...

于 2009-01-06T08:27:52.100 に答える
45

やっている:

ini_set('memory_limit', '-1');

は決して良いことではありません。非常に大きなファイルを読み取る場合は、少しずつコピーすることをお勧めします。ベスト プラクティスとして、次のコードを試してください。

$path = 'path_to_file_.txt';

$file = fopen($path, 'r');
$len = 1024; // 1MB is reasonable for me. You can choose anything though, but do not make it too big
$output = fread( $file, $len );

while (!feof($file)) {
    $output .= fread( $file, $len );
}

fclose($file);

echo 'Output is: ' . $output;
于 2015-03-07T12:55:53.290 に答える
21

残念ながら、PHP でプログラミングすると、思ったよりも速くメモリを消費してしまうことがあります。参照を使用する代わりに、文字列、配列、およびオブジェクトをコピーすることでそれを実行できますが、PHP 5 はこれを PHP 4 よりも自動的に行うことになっています。しかし、データ セット全体を複数の手順で処理することは、最小の論理単位を処理する場合に比べて無駄です。一度に。古典的な例は、データベースからの大きな結果セットを操作することです。ほとんどのプログラマは、結果セット全体を配列にフェッチし、foreach(). while()ループを使用して一度に 1 行ずつフェッチして処理すると、メモリ効率が大幅に向上します。同じことがファイルの処理にも当てはまります。

于 2009-01-06T22:22:24.787 に答える
15

大きなファイルを読みたい場合は、一度に読むのではなく、少しずつ読む必要があります。
簡単な計算です。1MBの大きなファイルを一度に読み取る場合、データを保持するために同時に少なくとも1MBのメモリが必要です。

fopenしたがって、 &を使用して少しずつ読む必要がありますfread

于 2009-01-22T10:00:01.683 に答える
6

スクリプト内のすべてのコードの上で次の行を実行することにより、php スクリプトに許可されるメモリを増やすことができます。

ini_set('memory_limit','-1'); // enabled the full memory available.

また、スクリプト内の不要な変数を割り当て解除します。

于 2015-11-19T07:26:32.877 に答える
3

ファイルを読み取ろうとすると、PHP のメモリが消費されます。たとえば、MP3 ファイルを開いて読み取ろうとすると (たとえば、 $data = file(" http://mydomain.com/path/sample.mp3 " のように)、すべてのファイルがメモリに読み込まれます。 .

Nelson が示唆しているように、実際にこれほど多くのメモリを使用する必要がある場合は、最大メモリ制限を増やすように努力できます。

于 2009-01-06T08:32:11.107 に答える
1

同様の状況があり、回答の上部にある ini_set('memory_limit', '-1'); を試してみました。すべてが正常に機能し、圧縮された画像ファイルは 1MB から KB を超えていました。

于 2010-12-23T06:43:06.493 に答える
0

書く

ini_set('memory_limit', '-1');

phpタグを開いた後の上部のindex.phpで

于 2014-10-14T13:23:10.000 に答える
-1

wordpress ユーザーは次の行を追加します。

@ini_set('memory_limit', '-1');

WordPress のインストールされたルート フォルダーにある wp-settings.php で

于 2015-01-21T19:05:19.740 に答える
-1

ホスティングを更新しておらず、データベースは読み取り専用でした。Joomla はセッションを作成する必要がありましたが、実行できませんでした。

于 2017-06-06T08:51:29.057 に答える
-1

laravelを使用している場合は、この方法を使用してください

public function getClientsListApi(Request $request){ print_r($request->all()); //for all request print_r($request->name); //for all name }

それ以外の

public function getClientsListApi(Request $request){ print_r($request); // it show error as above mention }

于 2019-04-20T13:12:04.553 に答える