©
本文档使用
php.cn手册 发布
PHP/YAZ keeps track of connections with targets (Z-Associations). A resource represents a connection to a target.
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 array host.
Example #1 Parallel searching using 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>' ;
}
}
?>