1

私のDevサーバー、TurnkeyLinuxのDebianSqueezeLAMPボックスで完全に正常に実行されているCakePHP2.2.3アプリケーションがあります。本番サーバーにInMotionホスティングを使用しており、コードをこのサーバーに移動するのは大変なことです。

1つのページでAJAX機能をテストしているときに、非常に役に立たなくなっていました。

致命的なエラー:行0の不明で許可されたメモリサイズ268435456バイトが使い果たされました(389245600バイトを割り当てようとしました)

tl; dr:この問題をデバッグする方法についての提案を探しています

私の最初の行動は、コントローラー関数内のすべてのコードを最小限に抑えることでした。私のコントローラーの1つのindex()アクションには、1行のコードが含まれていますが、それでも、実行ごとに256MBのメモリを超えることができます。

$this->autoRender = false;

上記の点を極端にするために、このエラーを生成しているModel&Controllerのすべての行をコメントアウトしました。まだメモリが不足しています。MySQLデータベース要求を行う他のいくつかのページも、完全にロードされているにもかかわらず、この「メモリ枯渇」エラーを表示します。他のページでは、メモリエラーはより目立たないものであり、実行を完全に妨げます。

メモリ制限を256から512、さらには1024mbに上げてみましたが、これはエラーメッセージ自体を抑制することだけです。ページはルーティング/レンダリングも何もしません。ただ静かに失敗します。

別のSO投稿の提案で、デバッグを2から0に下げてみましたが、これも問題の解決にはなりません。

XDebugが本番サーバーにインストールされていないため、問題を修正するためにWebホストの問題を追跡する方法がわかりません。

私たちが使用しているVPSは、Apache 2.2.23、MySQL 5.3.18、およびCakePHP2.2.3を実行しているCentOS5.8サーバーです。

私たちのウェブホストは、この主題に関するこれ以上の情報を提供できないか、提供しません。彼らは私たちが「ケーキの開発者にこのようなものを見たことがあるかどうか尋ねる」ことを提案しました。これは缶を蹴り飛ばす非常に臆病な方法だと私は感じています。ここSOの誰かが以前にこの問題のようなものを見たことがあり、助けてくれるかもしれないことを願っています。

4

2 に答える 2

0

以前にこの問題を見たことがありますが、それは Containable 動作を使用していないことが原因である可能性があります。$recursive = -1AppModel (または使用しているモデル)を設定する方法を学ぶ前に、何度も起こりました。ページごとに大量の情報を意図的に管理している場合を除き、取得するデータを制限する必要があります。Containable Behavior$recursive

于 2013-04-04T17:12:32.543 に答える
0

ヒント: セッションの問題である可能性があります。$_SESSION に保存しすぎると、session_start() がそのようなことを行う可能性があります。保存したたわごとをすべて読み取らなければならないからです。これを試してみてください:

$_SESSION = 配列();

これが役立つ場合は、残りを見つけることができます。

于 2013-07-26T01:13:56.757 に答える