Hallo zusammen.
Mal wieder einige Fragen zu meiner Suchfunktion.
Den Code kennt ihr ja bereits:
Es ist so: Die Suche durchsucht nur den Ordner, in dem das Script liegt.
Das ist soweit ja OK (siehe Ordnerstruktur weiter unten).
Doch ist die Suche sehr langsam. Ich habe schon die Dateien, die nicht durchsucht
werden sollen in ein Unterverzeichnis gelegt (z.B: auch die html-Seite, in der das Suchformular eingebunden ist).
Das Script heißt "plus.php"...
Ich möchte keine Datenbanklösung, weil das Script eigentlich schon super funktioniert.
Nur dauert es eben ewig, bis es die Seiten mal durchsucht hat (sind weniger als 10!).
Gibt's Möglichkeiten, die Geschwindigkeitsbremsen zu beseitigen?
Danke, liebe Grüße,
Claudi (altox-de)
P.S: Das Suchscript wird auf http://www.biblothek.de >> Suche nach Personen eingesetzt.
Direktlink zum Suchformular: hier
Mal wieder einige Fragen zu meiner Suchfunktion.
Den Code kennt ihr ja bereits:
PHP:
<?php
$dateityp = ".htm";
if(empty($search)) {$search=$_POST[search];}
if(strlen($search) < "3")
{echo "<body leftmargin=0 marginheight=3 marginwidth=0 topmargin=3><font face=Arial>Sie sind hier: biblothek.de >> Suche >> nach Personen >> Fehler<br><br>Ihr Suchbegriff ist zu kurz! Bitte beachten Sie, <br> dass Ihr Suchbegriff mindesdens drei Buchstaben lang sein muss, <br> um von unserer Suche berücksichtigt zu werden.<br>Bitte versuchen Sie es nochmals!<p>Falls Sie Hilfe bei der Suche benötigen, klicken Sie <b><a href=../../../suchanleitung.html target=M-A-I-N-S-I-T-E>hier</a><b>.</font>";exit;}
$found = "0";
$verz = opendir('.');
while($file = readdir($verz))
{
if($file != "." && $file != ".." && !is_dir($file))
{
$filetype = stristr($file, $dateityp);
if(!empty($filetype))
{
$string = file_get_contents($file);
$string = eregi_replace(".*<title>(.*)</title>.*", '\\1', $string);
//$string = strtolower($string);
//$search = strtolower($search);
$test = substr_count($string, $search);
if(!empty($test))
{
$string = ereg_replace("\n", "", $string);
$string = strip_tags($string);
$pieces = explode($search, $string);
$piece1 = substr($pieces[0], -50);
$piece1 = explode(" ", $piece1);
array_shift($piece1);
$piece1 = implode(" ", $piece1);
$piece2 = substr($pieces[1], 0, 100);
// $piece2 = explode(" ", $piece2);
// array_pop($piece2);
// $piece2 = implode(" ", $piece2);
$rest = "$piece1<b>$search</b>$piece2";
$array .= "<font face=Arial> $rest <br>Link: <a href=\"$file\" class=\"link\"> $file </a></font><br><br>\n";
$found ++;
}}}}
closedir($verz);
if($found != "0")
{
echo "<body leftmargin=0 marginheight=3 marginwidth=0 topmargin=3><font face=Arial>Sie sind hier: biblothek.de >> Suche >> nach Personen >> Ergebnisse <br><br> Ihre Suche ergab <strong>$found</strong> Treffer:</font><br><br>";
$array = explode("\n", $array);
natsort($array);
reset($array);
$array = array_reverse($array);
while(list($line_num, $line) = each($array))
{
$ausgabe .= "$line\n";
}
print $ausgabe;
}
if($found == "0")
{ echo "<body leftmargin=0 marginheight=3 marginwidth=0 topmargin=3><font face=Arial>Sie sind hier: biblothek.de >> Suche >> nach Personen >> keine Ergebnisse<br><br>Wir bitten vielmals um Entschuldigung, <br> aber es wurden keine Inhalte passend zu Ihren Eingaben gefunden. <br> Bitte versuchen Sie es nochmals!<p>Falls Sie Hilfe bei der Suche benötigen, klicken Sie <b><a href=../../../suchanleitung.html target=M-A-I-N-S-I-T-E>hier</a><b>.</font>";}
?>
Es ist so: Die Suche durchsucht nur den Ordner, in dem das Script liegt.
Das ist soweit ja OK (siehe Ordnerstruktur weiter unten).
Doch ist die Suche sehr langsam. Ich habe schon die Dateien, die nicht durchsucht
werden sollen in ein Unterverzeichnis gelegt (z.B: auch die html-Seite, in der das Suchformular eingebunden ist).
Das Script heißt "plus.php"...
Ich möchte keine Datenbanklösung, weil das Script eigentlich schon super funktioniert.
Nur dauert es eben ewig, bis es die Seiten mal durchsucht hat (sind weniger als 10!).
Gibt's Möglichkeiten, die Geschwindigkeitsbremsen zu beseitigen?
Danke, liebe Grüße,
Claudi (altox-de)
P.S: Das Suchscript wird auf http://www.biblothek.de >> Suche nach Personen eingesetzt.
Direktlink zum Suchformular: hier
Zuletzt bearbeitet: