このエラー メッセージが表示されています。何か提案はありますか?
PHPで33554432バイトの許容メモリサイズが使い果たされました(43148176バイトを割り当てようとしました)
このエラー メッセージが表示されています。何か提案はありますか?
PHPで33554432バイトの許容メモリサイズが使い果たされました(43148176バイトを割り当てようとしました)
ついに私は答えを見つけました:
phpファイルでエラーが発生する行の前にこの行を追加するだけです
ini_set('memory_limit', '-1');
サーバーのメモリ使用量は無制限になり、正常に動作しています。
安全なメモリ使用'44M'
の代わりに検討してください。'-1'
共有ホスティングの制限を引き上げる 2 つの簡単な方法を次に示します。
PHP.ini ファイルにアクセスできる場合は、PHP.ini の行を変更します。行に 32M と表示されている場合は、64M を試してください。
memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)
PHP.ini にアクセスできない場合は、これを .htaccess ファイルに追加してみてください。
php_value memory_limit 64M
スクリプトがメモリを使いすぎています。これは、制御不能なループがあり、ループの各パスでオブジェクトを作成したり、配列に追加したりする場合に、PHP でよく発生する可能性があります。
無限ループをチェックします。
それが問題でない場合は、終了したオブジェクトを null に設定して破棄することで、PHP を助けてみてください。例えば。$OldVar = null;
エラーが実際に発生するコードも確認してください。その行が大量のメモリを割り当てていると思いますか? そうでない場合は、何が問題なのかを調べてみてください...
やっている:
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;
残念ながら、PHP でプログラミングすると、思ったよりも速くメモリを消費してしまうことがあります。参照を使用する代わりに、文字列、配列、およびオブジェクトをコピーすることでそれを実行できますが、PHP 5 はこれを PHP 4 よりも自動的に行うことになっています。しかし、データ セット全体を複数の手順で処理することは、最小の論理単位を処理する場合に比べて無駄です。一度に。古典的な例は、データベースからの大きな結果セットを操作することです。ほとんどのプログラマは、結果セット全体を配列にフェッチし、foreach()
. while()
ループを使用して一度に 1 行ずつフェッチして処理すると、メモリ効率が大幅に向上します。同じことがファイルの処理にも当てはまります。
大きなファイルを読みたい場合は、一度に読むのではなく、少しずつ読む必要があります。
簡単な計算です。1MBの大きなファイルを一度に読み取る場合、データを保持するために同時に少なくとも1MBのメモリが必要です。
fopen
したがって、 &を使用して少しずつ読む必要がありますfread
。
スクリプト内のすべてのコードの上で次の行を実行することにより、php スクリプトに許可されるメモリを増やすことができます。
ini_set('memory_limit','-1'); // enabled the full memory available.
また、スクリプト内の不要な変数を割り当て解除します。
ファイルを読み取ろうとすると、PHP のメモリが消費されます。たとえば、MP3 ファイルを開いて読み取ろうとすると (たとえば、 $data = file(" http://mydomain.com/path/sample.mp3 " のように)、すべてのファイルがメモリに読み込まれます。 .
Nelson が示唆しているように、実際にこれほど多くのメモリを使用する必要がある場合は、最大メモリ制限を増やすように努力できます。
同様の状況があり、回答の上部にある ini_set('memory_limit', '-1'); を試してみました。すべてが正常に機能し、圧縮された画像ファイルは 1MB から KB を超えていました。
書く
ini_set('memory_limit', '-1');
phpタグを開いた後の上部のindex.phpで
wordpress ユーザーは次の行を追加します。
@ini_set('memory_limit', '-1');
WordPress のインストールされたルート フォルダーにある wp-settings.php で
ホスティングを更新しておらず、データベースは読み取り専用でした。Joomla はセッションを作成する必要がありましたが、実行できませんでした。
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
}