基本的に、単一のフォームがタブに分割された 1 つのページである Web アプリがあり、それぞれに個別のデータベース テーブルのデータが含まれています。フォーム アクションは、フォーム データを取得してデータベースに保存する save.php スクリプトを指します。
save.php スクリプトは、データベース テーブルごとに 1 つずつ、複数の SQL INSERT/UPDATE ステートメントで構成されるように構成されています。ユーザー設定などに基づいて一部のフォーム タブが非表示になっているため、この方法で実行されます。これらのステートメントの変数は、実際にはいつでも実行されます。
ユーザーを別のページにリダイレクトできるように、すべての SQL クエリの実行がいつ終了したかを判断する方法はありますか?
簡単な例として、save.php スクリプトは、基本的に次のようないくつかのコード ブロックで構成されています。
$updQuery = "UPDATE exampletable SET row=1 WHERE x=y";
try {
$updResult = odbc_exec($connect,$updQuery);
}
catch (RuntimeException $e) {
ExceptionHandlingStuff();
}
通常、リダイレクトの場合、次のようにメタリフレッシュを使用します。
<meta http-equiv="refresh" content="10; URL=homepage.php">
更新が開始されるまでにすべての SQL クエリが実行されることを「合理的に」確実にするために、10 秒などの長い遅延に設定できますが、これは保証を提供せず、ユーザーに不必要な遅延を引き起こす恐ろしいハックのように思えます。ほとんどの場合、クエリは 10 秒の遅延が終わるずっと前に完了しているためです。
ページ上のすべての SQL INSERT/UPDATE ステートメントの実行が終了したことを検出して、その後すぐにユーザーをリダイレクトできるようにする最善の方法は何ですか?
参考までに、PHP と ODBC を使用して 4D SQL ANSI-92 データベースに接続しています。