PHP コーディング規約

コーディング規約ってやっぱりあった方がいいですよね。できるだけ多くの人が馴染みやすいのがいいですよね。

PHPのコーディングで参考になるものはと見つけたのが PEAR (PHP Extension and Application Repository) の標準コーディング規約です。

http://pear.php.net/manual/ja/standards.php

PEAR ライブラリを使ってなくても、このような標準コーディングが公開されていることは大変参考になります。

PEAR Cache_Lite でコンテンツをキャッシュ

あるサイトから RSS フィードを取得してページに表示したいのですが、ページが表示されるたびに RSS フィードを取得していたのでは、ページの表示に時間がかかってしまいます。

そこで、簡単にキャッシュ システムを提供してくれる PEAR::Cache_Lite を利用することにしました。ページを表示する時に、キャッシュに表示コンテンツがあるかチェックして、なければ取得し、あればキャッシュされているものを表示します。

キャッシュには生存期間の設定ができるので便利です。

require_once "Cache/Lite.php";
define('BLOG_RSSFEED', 'http://www.northwind.mydns.jp/samples/blog/feed/');

$options = array(
  'cacheDir' => '/tmp/',
  'lifeTime' => 3600,
  'pearErrorMode' => CACHE_LITE_ERROR_DIE
);
$cache = new Cache_Lite($options);
$rss = false;

if ($xml = $cache->get(BLOG_RSSFEED))
{
  // キャッシュがヒットした !
  // キャッシュ内の XML 文字列を XMLSimpleElement として取得
  $rss = simplexml_load_string($xml);
}
else
{
  // 有効なキャッシュが見つからなかった (このRSSをを取得して保存)
  $rss = simplexml_load_file(BLOG_RSSFEED);

  if (is_bool($rss) && $rss === false)
  {
    // RSS取得エラー
  }
  else
  {
    // キャッシュにRSSをXML文字列として保存
    $cache->save($rss->asXML());
  }
}

参考:
Cache_Lite::get()
Cache_Lite::save()

pear install pear/Cache_Liteでエラー

PHP の Web アプリケーションでキャッシュを利用してパフォーマンスの向上を検討しようとして PEAR の Cache_Lite を利用しようとしました。

ところが、Cache_Lite をインストールしようとしたらエラーが。。。

# pear install pear/Cache_Lite
pear/Cache_Lite requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
No valid packages found
install failed 

PEAR Installerが古いということで、次に下記コマンドを実行。

# pear upgrade PEAR
pear/PEAR dependency package "pear/Console_Getopt" downloaded version 1.3.1 is not the recommended version 1.2.3, but may be compatible, use --force to install
pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
pear/Console_Getopt requires PEAR Installer (version >= 1.8.0), installed version is 1.4.9
No valid packages found
upgrade failed

とアップグレードができないので、–force オプション付きでリトライ。

# pear upgrade --force PEAR
warning: pear/PEAR dependency package "pear/Console_Getopt" downloaded version 1.3.1 is not the recommended version 1.2.3
warning: pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
warning: pear/Console_Getopt requires PEAR Installer (version >= 1.8.0), installed version is 1.4.9
downloading PEAR-1.9.4.tgz ...
Starting to download PEAR-1.9.4.tgz (296,332 bytes)
.............................................................done: 296,332 bytes
downloading Archive_Tar-1.3.10.tgz ...
Starting to download Archive_Tar-1.3.10.tgz (18,294 bytes)
...done: 18,294 bytes
downloading Console_Getopt-1.3.1.tgz ...
Starting to download Console_Getopt-1.3.1.tgz (4,471 bytes)
...done: 4,471 bytes
upgrade ok: channel://pear.php.net/Console_Getopt-1.3.1
upgrade ok: channel://pear.php.net/Archive_Tar-1.3.10
upgrade ok: channel://pear.php.net/PEAR-1.9.4
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
To install use "pear install pear/PEAR#featurename"

アップグレードが成功したので、もう一度 Cache_Lite のインストール。

# pear install pear/Cache_Lite
downloading Cache_Lite-1.7.15.tgz ...
Starting to download Cache_Lite-1.7.15.tgz (32,355 bytes)
.........done: 32,355 bytes
install ok: channel://pear.php.net/Cache_Lite-1.7.15

以上です。備忘録。

# pear -V
PEAR Version: 1.9.4
PHP Version: 5.1.6
Zend Engine Version: 2.1.0
Running on: Linux localhost 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 17:45:52 EST 2012 i686