YAZ 関数
導入
この拡張モジュールは、情報取得用の Z39.50 プロトコルを実装する YAZ™ ツールキットへの PHP インターフェースを 提供するものです。この拡張モジュールにより、Z39.50 ターゲット(サーバ) を並列に検索またはスキャンする Z39.50 オリジン(クライアント)を 容易に実装することが可能になります。このモジュールは Z39.50 の複雑さを隠蔽するため、使用法がかなり容易に なります。PHP で利用可能な様々な RDB の API により提供されているものに 非常によく似た、ステートレスな持続的接続がサポートされています。 これは、セッションはステートレスですが、ユーザ間で共有されるということを 意味します。これにより多くの場合に接続および初期化手順が保存されます。
YAZ™ は、» http://www.indexdata.dk/yaz/ で取得可能です。この拡張モジュールに 関する新しい情報、スクリプトの例等を » http://www.indexdata.dk/phpyaz/ にて 参照可能です。
注意: この拡張モジュールは » PECL レポジトリに移動 されており、以下のバージョン以降 PHP にバンドルされなくなっています。 PHP 5.0.0.
インストール手順
YAZ (ANSI/NISO Z39.50 サポート) を取得し、インストールしてください。 » YAZ archive から、ソース形式あるいは さまざまな形式のビルド済みパッケージで YAZ が取得可能です。 Debian GNU/Linux、Suse Linux、FreeBSD のようなシステムでは、 ディストリビューションの一部として YAZ が組み込まれています。PHP 4 シリーズでは、YAZ 拡張モジュールがバンドルされています(しかし、 YAZ 自体はバンドルされていません)。 オプション --with-yaz[=DIR] を 指定し、他の任意のモジュールとあわせて PHP をコンパイルしてください。
例 2487. Unix 上の PHP 4 での YAZ のコンパイル
gunzip -c php-4.4.X.tar.gz|tar xf - gunzip -c yaz-2.1.8.tar.gz|tar xf - cd yaz-2.1.8 ./configure --prefix=/usr make sudo make install cd ../php-4.4.X. ./configure --with-yaz=/usr/bin make sudo make install
PHP 5 では YAZ 拡張モジュールは » PECL にあり、共有オブジェクト/dll としてインストールされます。 もし pear がインストールされている場合、YAZ 拡張モジュールを ダウンロードして設定・インストールをする最も簡単な方法は pear コマンドを使用することです。
例 2488. GNU/Debian Linux 上での PECL YAZ のインストール
Debian GNU/Linux システムでは、以下のようにして YAZ および PECL YAZ をインストールします。
sudo apt-get install libyaz-dev sudo pear install yaz
Windows では、php_yaz.dll は yaz.dll に依存しています。 yaz.dll は、PHP サイトにある Win32 zip アーカイブに 含まれています。また、» YAZ WIN32 area にある Windows 版の YAZ の中にも含まれています。
警告 |
PHP 5.0.5 の Win32 zip アーカイブに含まれている yaz.dll はバージョンが古すぎます (バージョン 1.9.1 < 要求されるバージョン 2.0.13)。 そのため、» YAZ WIN32 インストール から得られる新しいバージョンの yaz.dll を使用してください。 |
Windows では、システムが yaz.dll ファイルを 見つけられるよう、PHP のディレクトリを PATH に追加することを 忘れないでください。
YAZ を共有モジュールとして使用する場合、Unix では php.ini の以下の行を 追加(あるいはコメント解除)してください。
extension=yaz.soまた、Windows では以下の行になります。
extension=php_yaz.dll
警告 |
IMAP、recode、 YAZ および Cyrus 拡張モジュールは、組み合わせて使用することはできません。 これは、同一の内部シンボルを使用しているためです。 |
注意: 上で挙げた問題については、YAZ のバージョン 2.0 で解消されています。
実行時設定
php.ini の設定により動作が変化します。表 330. YAZ 設定オプション
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
yaz.max_links | "100" | PHP_INI_ALL | PHP 4.3.0 以降で使用可能です。 |
yaz.log_file | NULL | PHP_INI_ALL | PHP 4.3.0 以降で使用可能です。 |
PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。
リソース型
リソース型は定義されていません。定義済み定数
定数は定義されていません。例
PHP/YAZ はターゲット(Z-Associations)との接続を保持し続けます。 正の整数で特定の接続のIDを表します。以下のスクリプトは、API の並列検索機能のデモです。引数を指定せずに コールした場合、この関数はクエリフォームを出力します。そうでない場合 (引数を指定した場合)は、配列 host にあるターゲットを 検索します。
例 2489. YAZ による並列検索
<?php
$host=$_REQUEST[host];
$query=$_REQUEST[query];
$num_hosts = count($host);
if (empty($query) || 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="checked"
name="host[]" value="z3950.loc.gov:7090/voyager" />
Library of Congress
<br />
RPN Query:
<input type="text" size="30" name="query" />
<input type="submit" name="action" value="Search" />
</form>
';
} else {
echo 'You searched for ' . htmlspecialchars($query) . '<br />';
for ($i = 0; $i < $num_hosts; $i++) {
$id[] = yaz_connect($host[$i]);
yaz_syntax($id[$i], "usmarc");
yaz_range($id[$i], 1, 10);
yaz_search($id[$i], "rpn", $query);
}
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 nl2br($rec);
echo "</dd>";
}
echo '</dl>';
}
}
?>
目次
- yaz_addinfo — 詳細なエラー情報を返す
- yaz_ccl_conf — CCL パーサを設定する
- yaz_ccl_parse — CCL パーサを起動する
- yaz_close — YAZ 接続をクローズする
- yaz_connect — Z39.50 サーバへの接続を準備する
- yaz_database — セッション内のデータベースを指定する
- yaz_element — 取得時の要素集合の名前を指定する
- yaz_errno — エラー番号を返す
- yaz_error — エラーの内容を返す
- yaz_es_result — 拡張サービスの結果を調査する
- yaz_es — 拡張サービスのリクエストを準備する
- yaz_get_option — 接続に関するオプションの値を返す
- yaz_hits — 直近の検索に関するヒット数を返す
- yaz_itemorder — ILLリクエストパッケージを関してZ39.50 Item Orderを準備する
- yaz_present — (Z39.50による)取得の準備を行う
- yaz_range — 取得するレコードの範囲を指定する
- yaz_record — レコードを返す
- yaz_scan_result — スキャンリクエストの結果を返す
- yaz_scan — スキャンの準備をする
- yaz_schema — 取得するスキーマを指定する
- yaz_search — 検索を準備する
- yaz_set_option — 接続に関するひとつあるいは複数のオプションを設定する
- yaz_sort — ソート条件を設定する
- yaz_syntax — 取得用に適当なレコード構文を指定する
- yaz_wait — Z39.50 リクエストが完了するまで待つ
「YAZ 関数」の例文・使い方・用例・文例
- その際には、この関数を使用します
- 関数が条件が真の場合にゼロの値を返す
- 小文字のゼータは数学で関数を意味する。
- このシステムは波動関数で記述することができる。
- プサイ関数
- 上記の関数とともに公式を利用すること
- このドライバーの特性は車間距離と速度の関数で表される。
- 4つのレジスタは、呼び出された関数側が保存する。
- 多くの人間にとって三角関数を学ぶことは無意味であるように思える。
- あのー、先生?黒板に書いてあるの、指数関数じゃなくて三角関数ですけど・・・。
- 【数学】 逆関数.
- その関数は連続微分可能である
- 最適化問題では、我々は最適化されるだろう最適値の関数を導き出す変数の値を求める
- インフレーションは指数関数的に上昇している
- 対数関数的方法で
- 関数または曲線の
- 導関数を計算する
- 数量または関数の逆数の、あるいは、数量または関数の逆数に関する
- 関数の微分係数を求める数学法
- 最大の関数値を見つける数学的方法
固有名詞の分類
- YAZ 関数のページへのリンク