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 http://www.indexdata.dk/yaz/. Vous pouvez trouver des informations,
des scripts d'exemples, etc. pour cette extension sur http://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.
Compilez YAZ (ANSI/NISO Z39.50 support) et installez-le.
Compilez PHP avec vos modules et ajoutez l'option
--with-yaz[=DIR].
Les instructions sont :
Exemple 1. Installation de YAZ gunzip -c php-4.3.X.tar.gz|tar xf -
gunzip -c yaz-2.0.tar.gz|tar xf -
cd yaz-2.0
./configure --prefix=/usr
make
make install
cd ../php-4.3.X.
./configure --with-yaz=/usr/bin
make
make install |
|
Si vous utilisez YAZ sous forme d'extension partagée, ajoutez (ou
décommentez) la ligne suivante dans le fichier
php.ini sous Unix:
Et sous Windows :
Sous Windows, php_yaz.dll dépend de
yaz.dll. Vous trouverez la bibliothèque
yaz.dll dans un sous dossier du dossier
dlls de l'archive Zip Win32.
Copiez yaz.dll dans un dossier de votre
variable d'environnement PATH
(c:\winnt\system32 ou
c:\windows\system32).
| Avertissement |
L'extension
IMAP ne peut être utilisée simultanément avec
l'extension recode, l'extension
YAZ ou l'extension Cyrus. Ceci est dû au fait que ces bibliothèques
utilisent un symbole interne commun. |
Note :
Le problème ci-dessus est résolu en version 2.0 de YAZ.
Le comportement de ces fonctions est
affecté par la configuration dans le fichier php.ini.
Tableau 1. Options de configuration
| 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. |
Pour plus de détails sur les constantes PHP_INI_*,
reportez-vous à
Annexe H.
Cette extension ne définit aucune ressource.
Cette extension ne définit aucune constante.
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.
Exemple 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>'; } } ?>
|
|