Memo/PHP

PEAR

Openpear

その他

"Cannot find module" エラー

"No handlers for package.xml version 2.0" エラー

PEAR_Errorによるdebug_backtraceをskip(off)

PEAR_ErrorのバックトレースをOFFにする方法。

require_once 'PEAR.php';
$isSkiptrace = &PEAR::getStaticProperty('PEAR_Error', 'skiptrace');
$isSkiptrace = true;

XML error at line 1, check URL

# pear search ajax 等で以下のエラーが出る場合

XML error at line 1, check URL 
Invalid return payload: enable debugging to examine incoming payload

現在インストールされているモジュール一覧の取得

シェルが使えれば「pear list」で表示されます。
レンタルサーバ等で何がインストールされているかわからない場合は、以下のように。
改行コードの問題で、ブラウザでは正常に表示されなくても、ソースみればわかります。

<?
echo "<pre>";
passthru("pear list");
echo "</pre>";
?> 

古いバージョンをインストールする

新しいバージョンになり、従来とは違う動作をする場合、古いバージョンをインストールする方法。

例:PEAR::Pager

# pear uninstall Pager
# pear install http://pear.php.net/get/Pager-2.2.7.tgz

セッションをPostgreSQLで管理する(zend)

http://www.zend.com/ にPostgreSQLを用いたユーザーセッションハンドラのソースがありました。

ページング処理(googleのようなページ切り替え)

パッケージ名バージョンメリットデメリット
PEAR::Pagerv2.2.6 (2005-03-14)実装が簡単。
リンクも自動で作成してくれる。
PEARのマニュアル中に日本語解説がある。
実際のデータで絞りこみを行うため大量のデータだと遅い。
totalItemsプロパティに総件数を入れる事で、実際のデータとは分離できる。
よって、DB_Pagerは不要。
PEAR::DB_Pagerv0.7 (2005-03-14)ページ番号しか管理しないため、大量のデータでも実装しだいで、高速に表示できる。
リンクを自分で作成するため、若干面倒。
日本語解説がない。

長い処理の際の対処

1970年以前の日付を扱う

PHPのtimestamp型はUnix Timeなので、1970年1月1日から2038年1月19日GMTしか扱えません。
それ以上の日付を扱いたい場合、pearのDateクラスがあります。
デフォルトはISO形式("YYYY-MM-DD HH:MM:SS")なのでそれを標準とすると、他DBとの連携、移植も楽に行えます。

  1. インストール
    pear install Date
  2. 使い方
    ソース:test.php
    <?
    require_once("Date.php");
    $oDate = new Date("1969-01-01");
    echo $oDate->getDate() . "\n";
    echo $oDate->getDate(DATE_FORMAT_ISO_BASIC) . "\n";
    echo $oDate->getDate(DATE_FORMAT_ISO_EXTENDED) . "\n";
    echo $oDate->getDate(DATE_FORMAT_ISO_EXTENDED_MICROTIME) . "\n";
    echo $oDate->getDate(DATE_FORMAT_TIMESTAMP) . "\n";
    //echo $oDate->getDate(DATE_FORMAT_UNIXTIME) . "\n"; // 1970年以前なのでエラー
    ?>
    実行結果:
    php -q test.php
    1969-01-01 00:00:00
    19690101T000000Z
    1969-01-01T00:00:00Z
    1969-01-01T00:00:0.000000Z
    19690101000000
  3. 便利なモジュールが付属
    1. Date/Calc.php
      1970〜2038年以外の日付計算を行える。
      1. 曜日
        <?
        require_once('Date/Calc.php');
        // 3100年 12月 5日は何曜日?
        $dow = Date_Calc::dayOfWeek(5, 12, 3100);
        echo "dow: $dow<br>\n";
        // dow: 3(日:0 月:1 火:2 水:3 木:4 金:5 土:6)
        ?>
    2. Date/Human.php
    3. Date/Span.php
    4. Date/TimeZone.php

PHPUnit

モジュールテスト自動化ツール


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38