車輪の再発明記録 -8ページ目

車輪の再発明記録

無駄なことを再発明するブログです。

説明
スクリプト処理が完了したとき、あるいは exit がコールされたときに
実行するコールバック関数を登録します。
共通変数
なし

1. db_delayedexecution_shutdown_hookを登録
2. db_profiling_shutdown_hookを登録
※C#で使用する場合はこの辺はいろいろ注意が必要

--------------------------------------------------------------------
C#での注意点
--------------------------------------------------------------------
・db_delayedexecution_shutdown_hookなどに登録する場合ちょっと注意が必要?
説明
すべての遅延クエリを実行します。
共通変数
DB_DELAYED_QUERIES, CONFIG

1. DB_DELAYED_QUERIESをquery_detailsという名前で列挙する
2. query = query_details["q"]とlink = query_details["l"]を取得してexecute_query(query, link)を実行
3. query_details["h"]が関数として使用可能である場合
3.1 execute_query(query, link)で実行した結果を引数としてquery_details["h"]()として実行する
4. query_details[“h”]が関数として使用可能でない場合
4.1 elgg_log()を実行する

--------------------------------------------------------------------
C#での注意点
--------------------------------------------------------------------
・elgg_logはelgglib.phpに記述されているので確認
・シャットダウン時に遅いqueryを実行する?
説明
DB程度のプロファイリング情報を表示する*シャットダウンフック(デバッグモード)
共通変数
dbcalls

1. elgg_log()を使用してメッセージ出力

--------------------------------------------------------------------
C#での注意点
--------------------------------------------------------------------
・elgg_logはelgglib.phpに記述されているので確認
説明
すべてのデータベース接続を確立する
共通変数
CONFIG, dblink

1 CONFIG->db->split(分割)に値がある場合
1.1 establish_db_link(“read”)とestablish_db_link(“write”)の接続を確立する
2 CONFIG->db->split(分割)に値がない場合
2.1 establish_db_link(“readwrite”)の接続を確立する

--------------------------------------------------------------------
C#での注意点
--------------------------------------------------------------------
establish_db_link(dblinkname = "readwrite")メソッドを使用してDBに接続するだけなので特に問題はないと思う
説明
データベース·サーバーに接続し、特定のデータベース·リンクにElggのデータベースを使用する
共通変数
CONFIG, dblink, DB_QUERY_CACHE, dbcalls;

1 dblinkに値が存在しなければ新規にArray(配列)を作成する
2 dblinknameがreadwriteでなく かつCONFIGのdb[dblinkname]に値がある場合
2.1 db[dblinkname]が配列である場合
2.1.1 配列数を取得する
2.1.2 CONFIG->db[dblinkname][取得した配列数]->dbhost
CONFIG->db[dblinkname][取得した配列数]->dbuser
CONFIG->db[dblinkname][取得した配列数]->dbpass
CONFIG->db[dblinkname][取得した配列数]->dbnameを取得
2.2 db[dblinkname]が配列でない場合
2.2.1 CONFIG->db[dblinkname]->dbhost, dbuser, dbpass, dbnameを取得
3 (dblinknameがreadwriteでなく かつCONFIGのdb[dblinkname]に値がある)でない場合
3.1 $CONFIG->dbhost, dbuser, dbpass, dbnameを取得
4 取得したdbhost, dbuser, dbpass, dbnameでDBに接続する
4.1 エラーが発生した場合elgg_echo()を使用してエラーを発生させる
5 取得したdbhost, dbuser, dbpass, dbnameでdbnameに接続する
5.1 エラーが発生した場合elgg_echo()を使用してエラーを発生させる
※C#で作成する場合は4・5は一つにまとめる
6 db_cache_off変数を作成する
7 CONFIG->db_disable_query_cacheに値がある場合
7.1 db_cache_off = CONFIG->db_disable_query_cache
※現在の時点ではdb_cache_offに何が入るか未確認
8 DB_QUERY_CACHE がFalse かつdb_cache_offもFalseであった場合
8.1 DB_QUERY_CACHEにnew ElggStaticVariableCache(“db_query_cache”)インスタンス作成
※ 初期化されていないグローバルとクエリキャッシュがオフになっていない場合は、
キャッシュを設定します。


--------------------------------------------------------------------
C#での注意点
--------------------------------------------------------------------
・DB接続クラスは共通変数か何かに保存しておく?