Tag : PHP

1 - 7 of 47

Loggix関連メモ:PDOへの移行開始

先日「JAM LOG : PHP系メモ:PDO関連」でLoggixのデータベースドライバをネイティブドライバからPDO[1]に移行しようかと考えている話を書いたが、重い腰を上げて着手した。

PDOにして何が嬉しいのかというと、

  • PDOは汎用データベースレイヤーなので、他のデータベースへの移植が楽になる。
  • SQLite3が使えるようになる。PHP5からはSQLiteはPHPに組み込まれたが、PHP5.1以降はドライバはPDOが推奨となる。また、SQLite3はPDOでしか動かない。
  • SQLite2→SQLite3への移行によるパフォーマンスの向上。
  • 新しいPHP環境への対応。

等々である。特にSQLiteに特化したBlogエンジン、というコンセプトで開発し始めたLoggixなので、新しいSQLiteにも積極的に対応して行きたい、ってのが一番の動機。

で、この一週間は忙しくて時間があまり取れない中、少しずつ合間をみて根っこのコアエンジンからテコ入れを始めた。これまでネイティブドライバベッタリで書いてしまっていたので書き直す部分が沢山出てきた。移行プランとしては、

  1. ネイティブSQLiteドライバからPDOドライバへ全面書き直し。
  2. まずはSQLiteバージョン2に対応。
  3. 次にSQLiteバージョン3に対応。

という流れで。

取りかかって一番最初にぶつかった問題がセッションデータをデータベース内で管理する機能の移植。元々特殊な書き方で力技的に実装した機能だったのでなかなか上手くいかなかったが、汎用性のあるクラスをオープンソースで配布されているのを発見。

それでもそのままでは動かないので、これを改造して使う事にした。色々実験していてようやくセッション機能が動きだした。いやー嬉しい。根っこの部分が上手く移植出来たのであとは少しずつ地道な作業をやっていくだけ。頑張ろう。


余談だが、今回から開発環境をこれまでのメインのOS XとLinux(Ubuntu)に加え、Windows XPでも行う事にした。開発環境としては、Windows用に移植されたXAMPP for Winとgeditを使い始めた。これがなかなか好感触で、Linux上と全く変わらない。また、OS XやLinuxなどのUNIX系環境上だけでは見えないWindows上での不具合も見つかるので、Win環境も積極的に使って行こうと思っている。


  1. PHP Data Objectの略。参考:PDO とは, PDOでサクサクDB開発:CodeZine 

PHP系メモ:PDO関連

LoggixのデータベースドライバをネイティブObject Oriented SQLiteドライバからPDOドライバに移行しようかと考え中。これは将来的な汎用性やSQLite3対応も見込んで。(SQLite3はPDOドライバでしか動かない)

まーこのように書けば簡単にみえるが実際に移植するのは大変な大作業。根っこの部分だけに、ほとんど「作り直し」的な状態になる。

とりあえずPDO関連をピックアップ。

Web技術系メモ:Webスキルのサイト「NETTUTS」

良いサイトを見つけたのでクリップ。

Web技術に関するスキルを紹介しているサイト。デザインも良いし、内容も洗練されていて良い。

その中で気になるエントリーをピックアップ。

Ubuntuでサーバー+OS Xクライアント関連

PHPオブジェクト指向関連

ちなみに「ASAP(エイサップ)」とは「As Soon As Possible」の略語。

PHPフレームワーク関連

PHP系メモ:テンプレートエンジンの話

技術評論社のサイト「gihyo.jp」にて、「連載:ZendFrameworkで作る『イマドキ』のWebアプリケーション」の連載が始まった。

その中で「フレームワークとテンプレートエンジン」という項目があり、

最近のフレームワークの傾向としては,テンプレートエンジンが用意されていないものが増えてきています。ZendFrameworkも独自のテンプレートエンジンを持たないフレームワークとしてリリースされました。PHPの場合,次のサンプルコードのように言語自体がテンプレートエンジンのようなものであり,出力バッファが組み込まれていることもあり,テンプレートシステムの必要性が低いからです。 ZendFrameworkで作る『イマドキ』のWebアプリケーション:第0回 PHPのWeb開発フレームワーク|gihyo.jp … 技術評論社

ということが書かれていた。

私はずっと以前からSmartyを代表とする「肥大化した独自記述採用のテンプレートエンジン」を批判してきた。PHP系雑誌やサイトで「Smarty、Smarty」とやたら取り上げられるのに嫌悪していた。まあ、「アンチSmarty」である。

関連:

この技術評論社のサイトで言及されている「テンプレートエンジン」と、ZendFrameworkや私がLoggixで採用している「テンプレートエンジン」とは本質が全く違う。前者は「独自記述言語」であり、テンプレートエンジンをフレームワーク化しようと肥大化していったものである。対してZend_Viewなどのクラスによるテンプレートエンジンは、PHPの記述をそのまま(X)HTMLに埋め込み、PHP標準の機能を使って(X)HTMLをブラウザに出力する前に処理結果などを埋め込んでバッファリングし最終的に纏めて出力する、という仕様である。もちろん私は断然後者派。

技術評論社のこのような知名度の高い方のレビューでも取り上げられるようになり、ようやくその方向性が正しいことが明確になってきた気がする。

PHP系メモ:KinoWiki関連

Loggix Projectで使っていたKinoWiki(KinoWiki.net)は2009年1月現在クローズしてあるのだが、ローカルでは継続して使用している。主な使用目的はLoggixのバグトラックと開発メモ。

ChangeLogはemacsのChangLogモードを使ってみているが、KinoWikiの掲示板プラグインをChangeLogで使えないかどうか考え中。

KinoWikiは開発が止まっているせいか、情報が極端に少ない。設計が奇麗でコードも美しくてカスタマイズがしやすいからもっと普及してもいいと思うんだけどなぁ。

最近チェックしたカスタマイズ参考サイト:

PHP系メモ:XdebugのWebフロントエンド「webgrind」

先日xdebugのフロントエンドツール「kcachegrind」の導入方法を書いたが、(↓)

このxdebugのWebフロントエンドツールである「webgrind」なるものをGoogle Codeで発見、早速導入してみた。(↓)

webgrind.png

上記画像は実際にxdebugのログを解析させた状態のものだが、一見して分かるように、非常によく出来ている。ソースを除いてみたが、非常にコンパクトに書かれていて、ファイルの構成もシンプルだが理にかなって整理されていて素晴らしい。

グラフにする機能など、トータル的な機能の豊富さはデスクトップアプリケーションであるkcachegrindに軍配があがるが、どの処理がコストがかかっているかをリスト形式で並べ替えてソート出来るなど、必要十分な機能は備わっているのでサッと見たい場合にはこちらのほうが気軽で良い気もする。

PHP系メモ:UbuntuでのXdebugとKcachegrindの導入

xdebugの入手先

環境

  • OS:Ubuntu Linux 8.04LTS
  • PHP:XAMPP 1.6.6 (PHP5.2.5)

1. STEP1:ビルドツールをインストール

Ubuntu 8.04ではそのままではXdebugをコンパイル出来ないので、ビルドツールをインストールする。

$ apt-get install php5-dev

2. STEP2:ダウンロード&ビルドする

$ wget http://xdebug.org/link.php?url=xdebug203
$ tar -xzf xdebug-2.0.3.tgz
$ cd xdebug-2.0.3
$ phpize
$ ./configure --enable-xdebug --with-php-config=/usr/bin/php-config
$ make
$ sudo cp modules/xdebug.so /opt/lampp/lib/php/extensions/no-debug-non-zts-20060613

3. STEP3:php.iniを編集

「/opt/lampp/etc/php.ini」をテキストエディタ(例えばgeditなど)で開き、以下の設定を一番下にコピペする。

[xdebug]
zend_extension=/opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so
xdebug.profiler_enable=1
xdebug.profiler_output_dir=/tmp

出力を時刻と関連付けたい場合は、さらに以下を追記する。

xdebug.profiler_output_name = timestamp

4. STEP4:XAMPPを再起動。

$ sudo /opt/lampp/lampp restart 

でXAMPPを再起動。「http://localhost/xampp/」のメニューから「phpinfo()」をクリックし、xdebugが有効になっているかどうかチェックする。

インストールまわりでの参考資料:

解析ツールのインストール

Xdebugをインストールすると、PHPアプリケーションがブラウザからアクセスされるとログファイルが「/tmp」ディレクトリに「cachegrind.out.xxxxxx」などのようなファイル名で保存される。

このログファイルを見やすくビジュアル化して解析するには、[[KCacheGrind>http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindIndex]] が必要。Ubuntu 8.04の場合、「アプリケーション」→「追加と削除」から「全ての利用可能なアプリケーション」を選択→「kcachegrind」で検索し、インストールする。(↓)

add-kcachegrind.png

インストール後は、「アプリケーション」→「プログラミング」から選択出来るになる。

その「プログラミング」メニュー項目にあるKCachegrindのアイコンをクリックして立ち上げて、以下のようにログファイルを読み込むとグラフィカルに解析情報を表示してくれる。

kcachegrind-on-ubuntu.png

使い方などの参考資料

1 2 3 4 5 6 次へ