Manuel PHP
Précédent |  | Suivant

# CXXV. 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 peristantes 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é retirée de PHP 5 et déplacée dans le module PECL.

# Installation

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:

    extension=php_yaz.so

Et sous Windows :

    extension=php_yaz.dll

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.

# Configuration à l'exécution

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
--- | --- | ---
yaz.max_links | "100" | PHP_INI_ALL
yaz.log_file | "" | PHP_INI_ALL

Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

# Types de ressources

Cette extension ne définit aucune ressource.

# Constantes prédefinies

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.

Exemple 2. Recherche parallèle utilisant YAZ

`<?php
$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="checked"
name="host[]" value="z3950.loc.gov:7090/voyager" />
Library of Congress
<br />
RPN Query:
<input type="text" size="30" name="term" />
<input type="submit" name="action" value="Search" />
</form>
';
} else {
echo 'Vous avez recherché '.htmlspecialchars($term).'<br />';
for ($i = 0; $i < $num_hosts; $i++) {
$id[] = yaz_connect($host[$i]);
yaz_range($id[$i], 1, 10);
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 "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>';
}
}
?>`

Précédent | Sommaire | Suivant
xslt_setopt | Niveau supérieur | yaz_addinfo