PHPの許容メモリサイズがxxxバイトであることを解決する。
今日、データを実行するためにデッドループを書いて、終わるまで終了しませんでした。その結果、実行が終了する前にPHPが赤ランプで表示されるようになりました。
致命的なエラーです。 許容メモリサイズ268435456バイト 例 ハウスト <スパン <スパン d
( tr を許可した。 猫 e 48 bytes) in D:\wwwmpaai nc ludefunctionaa.func.php on line 278
<スパン この問題には、2つの解決策があります。
ひとつは、PHP のメモリ制限を直接解除する方法です。 セット ("memory_limit","-1") とする。
次に、phpのメモリ制限を、ローカルメモリサイズを参照しながら、必要に応じて変更します。例えば、516Mに変更します。つまり ini_set("memory_limit","516M")
または、php.iniファイルでmemory_limit = 516Mに変更します。
<スパン でも、メモリ制限ってなんだろう?
phpの関連ドキュメントでは、memory_limitについて以下のように説明されています。
memory_limit: 整数
このディレクティブは、スクリプトが要求できるメモリの最大バイト数を設定します。これは、下手なスクリプトがサーバで利用可能なメモリをすべて消費してしまうことを 防ぐのに役立ちます。このディレクティブを使用するには、コンパイル時に有効にする必要があります。ですから、configure の行は以下を含む必要があります。--
有効にする
-memory-limit.は、メモリ制限が必要ない場合は、-1に設定する必要があります。php 4.3.2 以降、PHP の関数 memory_get_usage() は memory_limit が有効な場合に使用することができます。つまり、ページ内のphp処理のメモリ制限は、デフォルト(/etc/php.ini)では128Mと定義されていますが(私のシステムでのデフォルトインストール後)、その後、開発チームがより複雑なアプリケーションのために書きましたが、まだ少し構造が足りないかもしれませんし、実際に頻繁なオブジェクト要求でメモリ不足になりました。
<スパン 上記で述べたように、これを解決する最善の方法は、メモリ設定を常に増やすことではなく、アプリケーションレベルで行う必要があります。ページの最後に以下のように出力されるコードでテストを実行しました。
<?
printf(" total run: %.2f s<br>".
"メモリ使用量。%.2f M<br> "です。
マイクロ
時間
(true)-$HeaderTimeを指定します。
memory_get_usage() / 1024 / 1024 );
? >
その結果、愕然とするとしか言いようのないものが見えてきました。
総実行時間:1.47秒
メモリ使用量 77.09 M
1つのページで77Mものリクエストがあるなんて、驚きです。その理由は、プログラマーがコーディングをしていて、変数に値を代入するだけで、決して
アンセット
($var) を上書きします。あるページへのリクエストが20のSQLクエリを処理し、それぞれが10のSQL結果を返すとしたら、プログラマはすべての
コル
1行が10Kだとすると、処理終了までに10K * 10 * 20 = 2Mまでページを増やさなければなりません。*20 = 2M のアレイの割り当て、最もアレイを複製する必要がある場合もあるという事実は考慮されていません。
ですから、phpでは、その後にunset($var)を使う方が理にかなっているのです。結局のところ、まだリソースの制限があるのです。
関連
-
[解決済み】接続の取得に失敗しました: php_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み] Paypal express checkout : システム的な10486エラー
-
[解決済み] エラー: バインドされた変数の数がトークンの数と一致しない
-
[解決済み] PHP - 文字列から数字以外の文字をすべて削除する [重複].
-
[解決済み] mysqli_multi_queryを実行し、最後のクエリの結果を使用する方法がわかりません。
-
[解決済み] header('HTTP/1.0 404 Not Found'); not doing anything
-
[解決済み] ErrorDocumentを使用しようとすると404 Not Foundエラーが発生する
-
[解決済み] phpを使用してmysqlの複数の列を更新する方法
-
[解決済み] mysql_real_escape_string が動作しない [duplicate].
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PHP - オーバーロードされたプロパティの間接的な変更
-
[解決済み] メーラーエラーです。SMTP connect() failed in php mailer( https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting) [duplicate].
-
[解決済み] Optionsディレクティブで禁止されているディレクトリのインデックス
-
[解決済み] 非推奨:mysql_real_escape_string()。mysql 拡張モジュールは非推奨で、将来的に削除される予定です: mysqli あるいは PDO を使ってください [重複] 。
-
[解決済み] Catchable fatal error: 114 行目で PDOStatement クラスのオブジェクトを文字列に変換できませんでした。
-
[解決済み] レスポンスの内容は文字列または __toString() を実装したオブジェクトでなければならず、 psql に移行した後に "boolean" が与えられる。
-
[解決済み] "booleanのメンバ関数fetch_assoc()の呼び出し" [重複] [重複
-
[解決済み] Docker MYSQL '[2002] 接続が拒否されました'.
-
[解決済み] Mandrillメール添付ファイルパス
-
[解決済み] Google reCAPTCHA - `incorrect-captcha-sol` が表示され続ける。