致命的なエラー: 許容メモリサイズ 134217728 バイトを使い果たしました 質問する

致命的なエラー: 許容メモリサイズ 134217728 バイトを使い果たしました 質問する

私は多数のクライアント POS (販売時点管理) システムを持っており、これらのシステムは定期的に新しい販売データを 1 つの集中データベースに送信し、そのデータはレポート生成用に 1 つの大きなデータベースに保存されます。

クライアント POS は PHPPOS に基づいており、標準 XML-RPC ライブラリを使用してサービスに売上データを送信するモジュールを実装しました。サーバー システムは CodeIgniter 上に構築されており、Web サービス コンポーネントに XML-RPC および XML-RPCS ライブラリを使用しています。大量の売上データ (sales テーブルから 50 行程度、および販売内の各アイテムに関連する sales_items からの個々の行) を送信するたびに、次のエラーが発生します。

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

128M は のデフォルト値ですphp.iniが、これは破るには大きな数値だと思います。実際、この値を 1024M に設定しようとしましたが、エラーが発生するまでに時間がかかるだけでした。

私が実行した手順としては、サーバー側のすべての処理を無効にし、入力に関係なく定型応答を返すように設定してみました。ただし、問題は実際のデータ送信にあると思います。PHP の最大スクリプト実行時間を無効にしてみましたが、それでもエラーが発生します。

ベストアンサー1

memory_limitbyを変更することは適切な解決策ini_set('memory_limit', '-1');ではありません。そうしないでください。

PHP コードのどこかにメモリ リークがある可能性があり、サーバーに必要なメモリをすべて使用するように指示している可能性があります。これでは問題はまったく解決されません。サーバーを監視すると、サーバーが RAM のほとんどを使用してディスクにスワップしていることがわかります。

おそらく、コード内の問題のあるコードを追跡して修正してみる必要があります。

おすすめ記事