関連リンクの処理にSQLiteを使ってみた
SqliteはPHP5以降で標準インストールされています。しかも、ACID性能がそこそこいいので、今後ログデーターなど重要でないものからこちらに移すことを検討しています。
まぁ、DB設計にはトラウマがあるので、あまりテーブル同士の関連性などを意識した設計をするつもりはありませんが。
もうすこし、マシなコードは書けないものか・・・。
/** * Relをセット * @param string $page ページ名 */ private function set_rel($page, $rel){ $req = $this->adapter->query( 'INSERT OR REPLACE INTO "rel" ("page", "data") VALUES (' . $this->adapter->platform->quoteIdentifier($page) . ','. $this->adapter->platform->quoteIdentifier(join("\n", array_unique($rel))). ')' ); $req->execute(); } /** * Relを取得 * @param string $page ページ名 */ private function get_rel($page){ $req = $this->adapter->query( 'SELECT "data" FROM "rel" WHERE "page"=' . $this->adapter->platform->quoteIdentifier($page) ); $results = $req->execute(); foreach ($results as $value) { $ret = $value['data']; } return !empty($ret) ? explode("\n", $ret) : array(); } /** * Refをセット * @param string $page ページ名 */ private function set_ref($page, $ref){ $req = $this->adapter->query( 'INSERT OR REPLACE INTO "ref" ("page", "data") VALUES (' . $this->adapter->platform->quoteIdentifier($page) . ','. $this->adapter->platform->quoteIdentifier(join("\n", array_unique($ref))) . ')' ); $req->execute(); } /** * Refを取得 * @param string $page ページ名 */ private function get_ref($page){ $req = $this->adapter->query( 'SELECT "data" FROM "rel" WHERE "page"=' . $this->adapter->platform->quoteIdentifier($page) ); $results = $req->execute(); foreach ($results as $value) { $ret = $value['data']; } return !empty($ret) ? explode("\n", $ret) : array(); }