PHP の致命的なエラー: 許可されたメモリ サイズ X バイトが使い果たされました (Y バイトを割り当てようとしました)

王林
リリース: 2023-08-18 22:36:01
オリジナル
1157 人が閲覧しました

如何解决PHP Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)

PHP 致命的エラーの解決方法: 許容メモリ サイズ X バイトが使い果たされました (Y バイトを割り当てようとしました)

PHP 開発を使用するプロセスで、私たちはよく遭遇します。このエラー: PHP 致命的エラー: 許可されたメモリ サイズ X バイトが使い果たされました (Y バイトを割り当てようとしました)。このエラーは通常、コード内のメモリ リソースの使用量が多すぎることが原因で発生します。この記事では、この問題を解決するためのいくつかの方法を紹介します。

  1. メモリ制限を増やす

このエラー メッセージに表示される X は、現在の PHP 環境のメモリ制限です。php.ini を変更することでメモリ制限を増やすことができます。 。まず、php.ini 構成ファイルを見つけて、次の 2 行を見つけます。

memory_limit = XM
ログイン後にコピー

その中の XM を、128M や 256M などのより大きな値に変更します。ファイルを保存した後、Web サーバーを再起動して有効にします。

  1. コードの最適化

コードでは、メモリ使用量の削減を試みる必要があります。コードを最適化する方法は次のとおりです:

グローバル変数の使用を避ける: グローバル変数は常にメモリを占有します。ローカル変数を使用するか、関数パラメータとして変数を渡すことができます。

大規模な配列またはオブジェクトの使用を避ける: 大量のデータを処理する場合は、イテレータまたはジェネレータを使用してメモリ使用量を削減するようにしてください。

使用されなくなったリソースを解放する: コード内で使用されなくなった変数、オブジェクト、または逆参照を適時に解放し、PHP のガベージ コレクション メカニズムが適時にメモリを解放できるようにします。

  1. キャッシュの使用

キャッシュを使用すると、メモリの消費量が削減され、コードの実行効率が向上します。キャッシュの使用方法は次のとおりです。

キャッシュ関数を使用する: PHP には、apc_store()apc_fetch()# など、キャッシュに使用できる関数が多数あります。 ## および file_get_contents() など。

キャッシュ コンポーネントを使用する: Memcached、Redis などの一部のサードパーティ キャッシュ コンポーネントを使用して、頻繁に読み書きする必要があるデータをキャッシュに保存できます。

テンプレート エンジンを使用する: テンプレート エンジンを使用して静的コンテンツをキャッシュし、後続のリクエストの速度を向上させます。

    ページング処理
大量のデータを処理する必要がある場合、ページングを使用して一度にデータの一部のみを処理できます。ページングを通じて、メモリ使用量を許容範囲内に制御できます。

以下はページング処理のコード例です。

$page = $_GET['page']; // 获取当前页码
$pageSize = 10; // 每页显示的数据量
$offset = ($page - 1) * $pageSize; // 计算偏移量

$sql = "SELECT * FROM `table` LIMIT $offset, $pageSize"; // 构建SQL查询语句

// 执行查询并处理结果
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
    // 处理每一行数据
}
ログイン後にコピー
ページング処理では、現在のページ番号に必要なデータのみが処理されるため、メモリの消費量を削減できます。

概要

PHP 致命的エラー: 許容メモリ サイズ X バイトが使い果たされました (Y バイトを割り当てようとしました) エラーが発生した場合は、まずメモリ制限を増やしてからコードを最適化し、キャッシュやページング、その他の方法を使用してメモリ使用量を削減します。これらの方法は、メモリ オーバーフローの問題を解決し、コードが正常に動作するようにするのに役立ちます。

以上がPHP の致命的なエラー: 許可されたメモリ サイズ X バイトが使い果たされました (Y バイトを割り当てようとしました)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!