印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux PEAR Date_Holidays_Driver_Japanese のインストール

PHP PEAR Date_Holidays_Driver_Japanese をインストールする。

■ ■ ■

PHP では,Date_Holidays_Driver_Japanese を使うと休日判定ができる。このモジュールは,内部で PEAR Date_Holidays を呼んでいる。

テスト環境は,Vine Linux 4.2 (kernel 2.6.16), PHP 5.2.6 である。

インストール

まず,PEAR Date_Holidays をインストールする。関連モジュールもすべてインストールするように,--alldeps オプションをつけておく。現時点での最新版のバージョンは 0.19.1 (PEAR :: Package :: Date_Holidays :: 0.19.1)。alpha 版なので,パッケージ名に「-alpha」をつける必要がある。

# pear install --alldeps Date_Holidays-alpha

私の環境では,依存モジュールとして Date-1.5.0a1, Console_Getargs-1.3.4, Numbers_Words-0.15.0, XML_Util-1.2.0RC1, XML_Parser-1.2.8, XML_Serializer-0.18.0 がインストールされた。

次に Date_Holidays_Driver_Japanese をインストールする。最新版は 0.2.2 である (PEAR::Date_Holidays_Driver_Japanese 0.2.2 - Do You PHP はてな)。オプションの「-af」は「--alldeps --force」と同じ意味である。インストールオプションは「pear help install」と入力することで表示させることができる。

# pear install -af http://www.doyouphp.jp/pear/Date_Holidays_Driver_Japanese-0.2.2.tgz
Could not download from "http://www.doyouphp.jp/pear/Date_Holidays_Driver_Japanese-0.2.2.tgz" (File http://www.doyouphp.jp:80/pear/Date_Holidays_Driver_Japanese-0.2.2.tgz not valid (received: HTTP/1.1 404 Not Found
))
Invalid or missing remote package file
Package "http://www.doyouphp.jp/pear/Date_Holidays_Driver_Japanese-0.2.2.tgz" is not valid
install failed

上のように,ファイルが見つからずに失敗する場合は,1つバージョンを下げてみる。

# pear install -af http://www.doyouphp.jp/pear/Date_Holidays_Driver_Japanese-0.2.1.tgz
downloading Date_Holidays_Driver_Japanese-0.2.1.tgz ...
Starting to download Date_Holidays_Driver_Japanese-0.2.1.tgz (10,139 bytes)
.....done: 10,139 bytes
install ok: channel://__uri/Date_Holidays_Driver_Japanese-0.2.1

すでにパッケージがインストールされている場合,バージョンアップ版をインストールするには「install」の代わりに「upgrade」を指定する。

# pear upgrade -af http://www.doyouphp.jp/pear/Date_Holidays_Driver_Japanese-0.2.2.tgz
downloading Date_Holidays_Driver_Japanese-0.2.2.tgz ...
Starting to download Date_Holidays_Driver_Japanese-0.2.2.tgz (10,921 bytes)
.....done: 10,921 bytes
upgrade ok: channel://__uri/Date_Holidays_Driver_Japanese-0.2.2

テスト

動作確認を,眠る開発屋blog » Date_Holidays_Driver_Japaneseを使ってみるとか さんのコードでやってみる。

動作はするのだが,非常に重く,怖くなってきたので思わず Ctrl-C。眠る開発屋blog » Date_Holidays_Driver_Japaneseを使ってみるとか2 さんには,メモリ消費量とかかった時間を表示させる例がある。isHoliday() はコストが高すぎる。そこで,うえちょこ@ぼろぐ » [php][PEAR]PEAR::Date_Holidays_Driver_Japanese 0.2.2リリース さんのアイデアをもらって,Date_Holidays_Driver::getHolidayForDate() が null かどうかで判定することにする。

<?php
ini_set('display_errors', 'On');
require_once('Date/Holidays.php');

$obj =& Date_Holidays::factory('Japanese', 2008);

for ($i = 1; $i <= 366; $i++) {
    $t = mktime(0, 0, 0, 1, $i, 2008);
    $date = date('Y-m-d', $t);
    if (! is_null($obj->getHolidayForDate($date, 'C'))) {
        echo "[{$date}] holiday\n";
    }
}
?>

これならOKだ。

Posted by n at 2008-07-24 23:49 | Edit | Comments (2) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments

すみません。。。0.2.2がちゃんとサーバに上がっていませんでした。
上げなおしましたので、再度確認してもらえるとありがたいです。

Posted by: shimooka at July 25, 2008 14:29

shimooka さん
無事アップグレードできました。対応ありがとうございました。記事にも反映しました。

Posted by: n at July 26, 2008 17:45
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?