0

ユーザーが致命的なエラーを受け取ったことを示したphpフォームがあります。

Maximum execution time of 30 seconds exceeded in C:\Program Files\Apache2.2\htdocs\eeallparts\registration.php on line 282.  

奇妙なのは、彼らがフォームを再送信したことであり、データベースにデータを挿入するはずのフォームが機能したため、これは一貫したエラーではありません。フォームにはかなりの数の送信があり (かなりの程度のスパム)、フォームが通常は機能することはわかっていますが、このランダムなエラーは明らかに気になります。

私は282行目に行きましたが、私が見るのはこれだけです:

if(!$insertContact_query = mssql_query($sql)) {     

これに関連して、設定された時間制限を確認することを提案した他のスレッドをいくつか読みました。クエリが単に時間がかかりすぎる場合、クエリは定期的にタイムアウトするのではなく、事実上常にタイムアウトするのではないでしょうか? ユーザーにフォームで同じ情報を再送信してもらいましたが、2 回目は機能しましたか?

4

1 に答える 1

1

制限時間には、データベースへのクエリにかかる時間など、外部データ ソースで費やされた時間は含まれません。

set_time_limit() 関数と構成ディレクティブ max_execution_time は、スクリプト自体の実行時間にのみ影響します。system() を使用したシステム コール、ストリーム操作、データベース クエリなど、スクリプトの実行以外で発生するアクティビティに費やされた時間は、スクリプトの最大実行時間を決定する際には含まれません。これは、測定時間が実数である Windows では当てはまりません。

クエリが大きなデータセットを返す場合、セットの処理中に単にタイムアウトになることがあります。可能であれば、php プロファイルを使用してボトルネックを示します。

于 2012-08-28T15:13:02.197 に答える