PHP マニュアル
前のページ |  | 次のページ

# CXXIV. YAZ 関数

# 導入

この拡張モジュールは、情報取得用のZ39.50プロトコルを実装する YAZツールキットへのPHPインターフェース を提供するものです。この拡張モジュールにより、Z39.50ターゲット(サー バー)を並列に検索またはスキャンするZ39.50オリジン(クライアント)を 容易に実装することが可能になります。

このモジュールはZ39.50 の複雑さを隠蔽するため、使用法がかなり容 易になります。PHPで利用可能な様々なSQL APIにより提供されているも のに非常によく似たステートレスな持続的接続がサポートされています。 これにより、セッションはステートレスですが、ユーザ間で共有され、 これにより多くの場合に接続および初期化手順が保存されます。

YAZ は、http://www.indexdata.dk/yaz/で取得可能です。この拡張モジュー ルに関する新しい情報、スクリプトの例等を http://www.indexdata.dk/phpyaz/にて 参照可能です。

# インストール手順

YAZをコンパイルし、インストールして下さい。PHPをオプション --with-yaz[=DIR] を付けて他の任意のモジュールとコンパイルして下さい。この手順の概要を 以下に示します。

    gunzip -c yaz-1.6.tar.gz|tar xf -
    gunzip -c php-4.0.X.tar.gz|tar xf -
    cd yaz-1.6
    ./configure --prefix=/usr
    make
    make install
    cd ../php-4.0.X
    ./configure --with-yaz=/usr/bin
    make
    make install

# 実行用の設定

これらの関数の動作は、`php.ini`の設定により変化します。

表 1. YAZ設定オプション

名前 | デフォルト | 変更の可否
--- | --- | ---
yaz.max_links | "100" | PHP_INI_ALL
yaz.log_file | "" | PHP_INI_ALL

PHP_INI_*定数の定義および詳細については、 ini_set()を参照して下さい。

# リソース型

この拡張モジュールはリソース型を全く定義しません。

# 定義済みの定数

この拡張モジュールは定数を全く定義しません。

# 例

PHP/YAZ はターゲット(Z-Associations)との接続を保持し続けます。 正の整数で特定の接続のIDを表します。

例 1. YAZによる並列検索

以下のスクリプトは、APIの並列検索機能のデモです。引数を指定せず にコールした場合、この関数は、クエリフォームを出力します。そう でない場合(引数を指定した場合)は、配列hostにあるターゲットを検 索します。

`$num_hosts = count ($host);
if (empty($term) || count($host) == 0) {
echo '<form method="get">
<input type="checkbox"
name="host[]" value="bagel.indexdata.dk/gils">
GILS test
<input type="checkbox"
name="host[]" value="localhost:9999/Default">
local test
<input type="checkbox" checked="1"
name="host[]" value="z3950.bell-labs.com/books">
BELL Labs Library
<br>
RPN Query:
<input type="text" size="30" name="term">
<input type="submit" name="action" value="Search">
';
} else {
echo 'You searced for ' . htmlspecialchars($term) . '<br>';
for ($i = 0; $i < $num_hosts; $i++) {
$id[] = yaz_connect($host[$i]);
yaz_syntax($id[$i],"sutrs");
yaz_search($id[$i],"rpn",$term);
}
yaz_wait();
for ($i = 0; $i < $num_hosts; $i++) {
echo '<hr>' . $host[$i] . ":";
$error = yaz_error($id[$i]);
if (!empty($error)) {
echo "Error: $error";
} else {
$hits = yaz_hits($id[$i]);
echo "Result Count $hits";
}
echo '<dl>';
for ($p = 1; $p <= 10; $p++) {
$rec = yaz_record($id[$i],$p,"string");
if (empty($rec)) continue;
echo "<dt><b>$p</b></dt><dd>";
echo ereg_replace("\n", "<br>\n",$rec);
echo "</dd>";
}
echo '</dl>';
}
}`

前のページ | ホーム | 次のページ
xslt_setopt | 上に戻る | yaz_addinfo