• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メモリ不足になった後の処理)

メモリ不足時の処理方法について

このQ&Aのポイント
  • 質問文章からセンセーショナルなタイトルを30文字前後で生成しました。メモリ不足時の処理方法について質問させて頂きたいです。
  • PHPで処理中にメモリ不足になった場合、エラーが発生します。メモリ不足が起きる可能性のある処理をtryなどで囲んでおき、実際にメモリ不足が起きた際はその処理を飛ばし、それ以降の処理を実行することは可能ですか?
  • もし方法などがあれば教えてください。また、質問に不備な点があればご指摘ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • usami33
  • ベストアンサー率36% (808/2210)
回答No.3

http://php.net/manual/ja/function.win32-ps-stat-mem.php メモリの容量や残容量をウオッチして、足りなくなりそうになったら処理を実行しないロジックを追加

non05410
質問者

お礼

そのような方法があったのですね。参考にさせて頂きます。 ありがとうございます。

その他の回答 (3)

noname#244856
noname#244856
回答No.4

多くのエラーはset_error_handler関数でErrorExceptionに変換することが出来ますが…↓ http://php.net/manual/ja/class.errorexception.php#errorexception.examples FatalErrorとParseErrorだけは不可能です。register_shutdown_function関数でシャットダウン関数として処理を登録するしか方法はありません。 (但しParseErrorに関しては、文法エラーのある外部ファイルをrequire等で読み込んだ場合に限ります。メインのPHPファイル自体に文法エラーがあった場合、当然シャットダウン関数は実行されません。) register_shutdown_function(function () { ....$error = error_get_last(); ....if ($error['type'] & (E_ERROR | E_USER_ERROR | E_CORE_ERROR | E_PARSE)) { ........何か致命的なエラーが起きた ....} }); ちなみにシャットダウン関数の中で再度致命的なエラーが起きた場合、そのまま何も行われずに終了します↓ http://ideone.com/KdsgXI

non05410
質問者

お礼

やはり不可能なのですね。 丁寧に教えて頂きありがとうございます。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

メモリー関係のエラーはtry~catchで捕らえられなかったはずなので、メモリリミットを増やすしかないでしょう。

non05410
質問者

お礼

やはりリミットを増やすというのが一般的なのですかね。 ありがとうございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>実際にメモリ不足が起きた際は、その処理を飛ばし、それ以降の処理を実行させる メモリ不足が起きている状況によります。 すくなくともその後の処理をしたとしても上流の処理でひっかかっているなら そのあとの整合性は確保されていないと思うので、やるだけ無駄だとは思うので やるとすると原状復帰処理でしょう メモリ不足がおきるのはよほど計画性のないプログラミングなので メモリ不足がおきないような対策を立てるのが一般的ですが

non05410
質問者

お礼

メモリ不足を起こさないようにするのが第一ですね。 ありがとうございます。

関連するQ&A