2002-04-15 00:12:54 +00:00
|
|
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
2002-09-15 15:26:52 +00:00
|
|
|
<!-- $Revision: 1.4 $ -->
|
2002-04-15 00:12:54 +00:00
|
|
|
<reference id="ref.yaz">
|
|
|
|
<title>YAZ functions</title>
|
|
|
|
<titleabbrev>YAZ</titleabbrev>
|
2002-07-20 12:26:41 +00:00
|
|
|
|
2002-04-15 00:12:54 +00:00
|
|
|
<partintro>
|
|
|
|
<section id="yaz.intro">
|
2002-07-20 12:26:41 +00:00
|
|
|
&reftitle.intro;
|
|
|
|
<para>
|
|
|
|
This extension offers a PHP interface to the
|
|
|
|
<productname>YAZ</productname> toolkit that implements the Z39.50
|
|
|
|
protocol for information retrieval. With this extension you can easily
|
|
|
|
implement a Z39.50 origin (client) that searches or scans Z39.50
|
|
|
|
targets (servers) in parallel.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The module hides most of the complexity of Z39.50 so it should be
|
|
|
|
fairly easy to use. It supports persistent stateless connections very
|
|
|
|
similar to those offered by the various SQL APIs that are available
|
|
|
|
for PHP. This means that sessions are stateless but shared amongst
|
|
|
|
users, thus saving the connect and initialize phase steps in most
|
|
|
|
cases.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
<productname>YAZ</productname> is available at <ulink
|
|
|
|
url="&url.yaz;">&url.yaz;</ulink>. You can find news information,
|
|
|
|
example scripts, etc. for this extension at <ulink
|
|
|
|
url="&url.yaz-phpyaz;">&url.yaz-phpyaz;</ulink>.
|
|
|
|
</para>
|
2002-04-15 00:12:54 +00:00
|
|
|
</section>
|
2002-07-20 12:26:41 +00:00
|
|
|
|
|
|
|
<section id="yaz.installation">
|
|
|
|
&reftitle.install;
|
|
|
|
<para>
|
|
|
|
Compile YAZ and install it. Build PHP with your favourite
|
|
|
|
modules and add option
|
|
|
|
<link linkend="install.configure.with-yaz">--with-yaz</link>.
|
|
|
|
Your task is roughly the following:
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
<informalexample>
|
|
|
|
<programlisting role="shell">
|
2002-04-15 00:12:54 +00:00
|
|
|
<![CDATA[
|
|
|
|
gunzip -c yaz-1.6.tar.gz|tar xf -
|
|
|
|
gunzip -c php-4.0.X.tar.gz|tar xf -
|
|
|
|
cd yaz-1.6
|
|
|
|
./configure --prefix=/usr
|
|
|
|
make
|
|
|
|
make install
|
|
|
|
cd ../php-4.0.X
|
|
|
|
./configure --with-yaz=/usr/bin
|
|
|
|
make
|
|
|
|
make install
|
|
|
|
]]>
|
2002-07-20 12:26:41 +00:00
|
|
|
</programlisting>
|
|
|
|
</informalexample>
|
|
|
|
</para>
|
|
|
|
</section>
|
|
|
|
|
2002-09-15 15:26:52 +00:00
|
|
|
&reference.yaz.ini;
|
2002-07-20 12:26:41 +00:00
|
|
|
|
|
|
|
<section id="yaz.resources">
|
|
|
|
&reftitle.resources;
|
|
|
|
&no.resource;
|
2002-04-15 00:12:54 +00:00
|
|
|
</section>
|
2002-07-20 12:26:41 +00:00
|
|
|
|
|
|
|
<section id="yaz.constants">
|
|
|
|
&reftitle.constants;
|
|
|
|
&no.constants;
|
|
|
|
</section>
|
|
|
|
|
|
|
|
<section id="yaz.examples">
|
|
|
|
&reftitle.examples;
|
|
|
|
<para>
|
|
|
|
PHP/YAZ keeps track of connections with targets
|
|
|
|
(Z-Associations). A positive integer represents the ID of a
|
|
|
|
particular association.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
<example>
|
|
|
|
<title><function>Parallel searching using YAZ</function></title>
|
|
|
|
<simpara>
|
|
|
|
The script below demonstrates the parallel searching feature of
|
|
|
|
the API. When invoked with no arguments it prints a query form; else
|
|
|
|
(arguments are supplied) it searches the targets as given in in array
|
|
|
|
host.
|
|
|
|
</simpara>
|
|
|
|
<programlisting role="php">
|
2002-04-15 00:12:54 +00:00
|
|
|
<![CDATA[
|
|
|
|
$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>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]]>
|
2002-07-20 12:26:41 +00:00
|
|
|
</programlisting>
|
|
|
|
</example>
|
|
|
|
</para>
|
2002-04-15 00:12:54 +00:00
|
|
|
</section>
|
|
|
|
</partintro>
|
|
|
|
|
|
|
|
&reference.yaz.functions;
|
|
|
|
|
|
|
|
</reference>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
|
|
Local variables:
|
|
|
|
mode: sgml
|
|
|
|
sgml-omittag:t
|
|
|
|
sgml-shorttag:t
|
|
|
|
sgml-minimize-attributes:nil
|
|
|
|
sgml-always-quote-attributes:t
|
|
|
|
sgml-indent-step:1
|
|
|
|
sgml-indent-data:t
|
|
|
|
indent-tabs-mode:nil
|
|
|
|
sgml-parent-document:nil
|
|
|
|
sgml-default-dtd-file:"../../../manual.ced"
|
|
|
|
sgml-exposed-tags:nil
|
|
|
|
sgml-local-catalogs:nil
|
|
|
|
sgml-local-ecat-files:nil
|
|
|
|
End:
|
|
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
|
|
vim: et tw=78 syn=sgml
|
|
|
|
vi: ts=1 sw=1
|
|
|
|
-->
|
|
|
|
|