この拡張モジュールは、情報取得用の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]
を付けて他の任意のモジュールとコンパイルして下さい。この手順の概要を
以下に示します。
これらの関数の動作は、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>'; } }
|
|