ロリポップでSQLite
ロリポップのMySQLサーバーは重すぎで嫌だって人ののための,ロリポップでSQLiteを使うためのTips
(※07/05/02にロリポップがSQLiteに正式に対応しました.ロリポップでPHP拡張を扱う一般的な手法かと思うので残しておきます)
コンパイル
wget http://pecl.php.net/get/SQLite-x.x.x.tgz # 又は,pecl download sqlite tar xzvf SQLite-x.x.x.tgz cd SQLite-x.x.x phpize ./configure make # modules/sqlite.soが出来る
ロリポップで使う
if (!extension_loaded("sqlite")) { dl("sqlite.so"); }debug_zval_dump(sqlite_libversion()); debug_zval_dump(sqlite_libencoding()); $s = sqlite_open("weztest.sqlite", 0666, $err); debug_zval_dump($err); debug_zval_dump($s); $r = sqlite_query("create table foo (a INTEGER PRIMARY KEY, b INTEGER )", $s); debug_zval_dump(sqlite_last_error($s)); debug_zval_dump(sqlite_error_string(sqlite_last_error($s))); $r = sqlite_query("select *, php('md5', sql) as o from sqlite_master", $s); debug_zval_dump($r); debug_zval_dump(sqlite_num_rows($r)); debug_zval_dump(sqlite_num_fields($r)); for ($j = 0; $j < sqlite_num_fields($r); $j++) { echo "Field $j is " . sqlite_field_name($r, $j) . "n"; } while ($row = sqlite_fetch_array($r, SQLITE_ASSOC)) { print_r($row); } sqlite_close($s);
以下のように表示され,カレントディレクトリにweztest.sqliteが作成されれば勝ち組
string(6) "2.8.14" refcount(1) string(7) "iso8859" refcount(1) NULL refcount(2) resource(2) of type (sqlite database) refcount(2) long(0) refcount(1) string(12) "not an error" refcount(1) resource(4) of type (sqlite result) refcount(2) long(1) refcount(1) long(6) refcount(1) Field 0 is type Field 1 is name Field 2 is tbl_name Field 3 is rootpage Field 4 is sql Field 5 is o Array ( [type] => table [name] => foo [tbl_name] => foo [rootpage] => 3 [sql] => create table foo (a INTEGER PRIMARY KEY, b INTEGER ) [o] => 2f5a980ca57765ddef1a9434c15d755f )
ちなみにsoファイルを一箇所(例えばextensionsディレクトリ)にまとめたいときはこちら参照. 今回の手法は一般的にロリポップでPECLを使う際に適用できると思う.たぶん
そうそうSQLiteといえばこの本↓がおすすめかと.amazonで中見検索ができるので見てみてはいかがでしょうか.
SQLite入門 すぐに使える軽快・軽量データベース・エンジン
Price: ¥ 2,940 JPY
Lowest used price: ¥ 4,850 JPY

