ホームページ > バックエンド開発 > PHPチュートリアル > データベース結果をキャッシュして PHP のパフォーマンスを向上させる (2)_PHP チュートリアル

データベース結果をキャッシュして PHP のパフォーマンスを向上させる (2)_PHP チュートリアル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-07-13 17:02:59
オリジナル
869 人が閲覧しました

通知ハンドラーの作成
これで、上で紹介した sendNotification
プロシージャを利用して、クライアントに変更通知を送信する通知ハンドラーを作成できます。リスト 2 の PL/SQL プロシージャ order_nf_callback を見てみましょう。
リスト 2.
OE.ORDERS テーブルへの変更の通知を処理する通知ハンドラー

CREATE OR REPLACE PROCEDURE orders_nf_callback (ntfnds IN SYS.CHNF$_DESC) IS <br>tblname VARCHAR2(60); <br>numtables NUMBER; <br>event_type NUMBER; <br>row_id VARCHAR2(20); <br>numrows NUMBER; <br>ord_id VARCHAR2(12); <br>url VARCHAR2(256) := 'http://webserverhost/phpcache/dropResults.php?order_no='; <br>BEGIN <br>event_type := ntfnds.event_type; <br>numtables := ntfnds.numtables; <br>IF (event_type = DBMS_CHANGE_NOTIFICATION.EVENT_OBJCHANGE) THEN <br>FOR i IN 1..numtables LOOP <br>tblname := ntfnds.table_desc_array(i).table_name; <br>IF (bitand(ntfnds.table_desc_array(i).opflags,  <br>DBMS_CHANGE_NOTIFICATION.ALL_ROWS) = 0) THEN <br>numrows := ntfnds.table_desc_array(i).numrows; <br>ELSE <br>numrows :=0; <br>END IF; <br>IF (tblname = 'OE.ORDERS') THEN <br>FOR j IN 1..numrows LOOP <br>row_id := ntfnds.table_desc_array(i).row_desc_array(j).row_id; <br>SELECT order_id INTO ord_id FROM orders WHERE rowid = row_id; <br>sendNotification(url, tblname, ord_id);  <br>END LOOP; <br>END IF; <br>END LOOP; <br>END IF; <br>COMMIT; <br>END; <br>/ <br>
ログイン後にコピー
「リスト 2」に示すように、この通知ハンドラーはパラメーターとして SYS.CHNF$_DESC
object を使用します。そのプロパティを使用して、その変更の詳細を取得します。この例では、この通知ハンドラーは、登録されたオブジェクトに対して行われた DML または DDL の変更に応じて データベース
によって投稿された通知のみを処理し (つまり、通知タイプが EVENT_OBJCHANGE
の場合のみ)、それらを無視します。インスタンスの起動やインスタンスのシャットダウンなどの他のデータベース イベント。上記のバージョン以降、ハンドラーは、OE.ORDERS
テーブル内の影響を受ける行ごとに発行された変更通知を処理できるようになりました。この記事の後半の「既存の登録にテーブルを追加する」セクションで、ハンドラーに数行のコードを追加して、OE.ORDER_ITEMS
テーブル内の変更された行の通知を処理できるようにします。

www.bkjia.com本当http://www.bkjia.com/PHPjc/630999.html技術記事通知ハンドラーの作成 ここで、上で説明した sendNotification プロシージャを使用してクライアントに変更通知を送信する通知ハンドラーを作成できます。 「リスト」を見てみましょう…
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート