YAZ
Introduction
Cette extension offre à PHP l'interface avec les produits YAZ, qui implémentent le » protocole Z39.50. Avec cette extension, vous pouvez facilement implémenter un client Z39.50 qui analyse ou scanne des serveurs Z39.50 en parallèle.
Le module masque l'essentiel de la complexité de Z39.50, ce qui le rend très facile à utiliser. Il supporte les connexions persistantes de manière similaire à celles supportées par les serveurs SQL : cela signifie qu'une connexion est partagée entre plusieurs scripts PHP, ce qui évite les opérations de connexions.
YAZ est disponible sur » https://www.indexdata.dk/yaz/. Vous pouvez trouver des informations, des scripts d'exemples, etc. pour cette extension sur » https://www.indexdata.dk/phpyaz/.
Note: Cette extension a été déplacée dans le module » PECL et ne sera plus intégrée dans PHP à partir de PHP 5.0.0.
Installation
Obtenez YAZ (ANSI/NISO Z39.50 support) et installez-le. YAZ peut être récupéré en source ou dans des paquetages déjà compilés à partir des » archives YAZ. Les systèmes tels que Debian GNU/Linux, Suse Linux, FreeBSD ont aussi YAZ fourni dans leur distribution.
Pour les versions de PHP 4, l'extension YAZ y est intégrée (mais pas YAZ lui-même). Compiler PHP avec vos modules favoris et ajoutez l'option --with-yaz[=DIR].
Example#1 Compilation de YAZ pour PHP 4 sur Unix
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
Pour PHP 5, l'extension YAZ est dans » PECL et est installée en tant qu'objet/dll partagé. Si vous avez pear d'installé, la méthode la plus facile pour télécharger, configurer et installer l'extension YAZ est d'utiliser la commande pecl.
Installation de YAZ sous Linux
Des informations sur l'installation de ces extensions PECL peuvent être trouvées dans le chapitre du manuel intitulé Installation des extensions PECL. D'autres informations comme les notes sur les nouvelles versions, les téléchargements, les sources des fichiers, les informations concernant les mainteneurs ainsi qu'un CHANGELOG, peuvent être trouvées ici : » https://pecl.php.net/package/yaz
Installation sous les systèmes Windows
La bibliothèque DLL pour cette extension PECL peut être téléchargée depuis, soit la page de » téléchargement PHP, soit depuis » https://pecl4win.php.net/ php_yaz.dll dépend de yaz.dll. Le fichier yaz.dll est une partie du fichier ZIP Win32 provenant du site de PHP. Il s'agit aussi d'une partie de l'installation de Windows YAZ disponible sur » YAZ WIN32 area.
Le fichier zip Win32 de PHP 5.0.5 inclut une version trop vieille de yaz.dll (version 1.9.1 < version 2.0.13 requise). Si tel est le cas, utilisez, yaz.dll à partir d'une nouvelle » installation YAZ WIN32.
Sur windows, n'oubliez pas d'ajouter le répertoire de PHP à votre variable d'environnement PATH pour que le fichier yaz.dll puisse être trouvé par votre système.
Si vous utilisez YAZ sous forme d'extension partagée, ajoutez (ou décommentez) la ligne suivante dans le fichier php.ini sous Unix:
extension=yaz.so
extension=php_yaz.dll
Les extensions IMAP, recode, YAZ et Cyrus ne peuvent être utilisées simultanément puisqu'elles utilisent un symbole interne commun.
Note: Le problème ci-dessus est résolu en version 2.0 de YAZ.
Configuration à l'exécution
Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.
Nom | Par défaut | Modifiable | Historique |
---|---|---|---|
yaz.max_links | "100" | PHP_INI_ALL | Disponible depuis PHP 4.3.0. |
yaz.log_file | NULL | PHP_INI_ALL | Disponible depuis PHP 4.3.0. |
Types de ressources
Cette extension ne définit aucune ressource.
Constantes pré-définies
Cette extension ne définit aucune constante.
Exemples
PHP/YAZ conserve les connexions aux serveurs. Une ressource de connexion représente une connexion particulière.
Le script ci-dessous montre comment effectuer une recherche parallèle. Lorsqu'il est appelé sans paramètres, ce script affiche la requête. Sinon, il effectue la recherche sur les serveurs donnés par le tableau host.
Example#2 Recherche parallèle utilisant 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 'Vous avez recherché '.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 "Erreur: $error";
} else {
$hits = yaz_hits($id[$i]);
echo "Nombre de résultats : $hits";
}
echo '<dl>';
for ($p = 1; $p <= 10; $p++) {
$rec = yaz_record($id[$i], $p, "string");
if (empty($rec)) continue;
echo "<dt><strong>$p</strong></dt><dd>";
echo nl2br($rec);
echo "</dd>";
}
echo '</dl>';
}
}
?>
Table of Contents
- yaz_addinfo — Retourne plus de détails après une erreur
- yaz_ccl_conf — Configure l'analyseur CCL
- yaz_ccl_parse — Appelle l'analyseur CCL
- yaz_close — Ferme une connexion YAZ
- yaz_connect — Prépare une connexion à un serveur Z39.50
- yaz_database — Spécifie la base d'une session YAZ
- yaz_element — Spécifie le type d'éléments YAZ à lire
- yaz_errno — Retourne le numéro d'erreur
- yaz_error — Retourne une description de l'erreur
- yaz_es_result — Inspecte le résultat d'un service étendu
- yaz_es — Prépare pour une Requête de Service Étendu
- yaz_get_option — Retourne la valeur d'une option de connexion YAZ
- yaz_hits — Retourne le nombre de résultats de la dernière recherche
- yaz_itemorder — Prépare une requête Z39.50 Item Order avec le package ILL-Request
- yaz_present — Prépare à la lecture (Z39.50 present)
- yaz_range — Spécifie le nombre maximal de résultats à lire
- yaz_record — Retourne un résultat
- yaz_scan_result — Retourne le résultat d'un scan
- yaz_scan — Prépare un scan
- yaz_schema — Spécifie le schéma de lecture
- yaz_search — Prépare une recherche
- yaz_set_option — Modifie une ou plusieurs options de connexion YAZ
- yaz_sort — Configure les critères de tri
- yaz_syntax — Spécifie la syntaxe de lecture des lignes
- yaz_wait — Attend l'exécution d'une requête