jomama Geschrieben 25. März 2003 Teilen Geschrieben 25. März 2003 Also ich habe grade unsere Intranetseite fertiggestellt und suche jetzt möglichst ein PHP-Skript, welches kostenlos runterzuladen ist und eine Stichwortsuche für den Ordner, in dem es liegt und allen Unterordnern kann. Eine MySQL-Datenbank ist nicht vorhanden und wird da auch nicht draufkommen, daher sind Textdateien das einzige, wo was gespeichert werden kann. Zu durchsuchende Dateien sind PHP, HTM und TXT. Am liebsten wäre mir, ich werf das Ding in einen Ordner, bastel ein Formular dazu und fertig. Ach ja, und man soll die Ordner nicht selber eintragen müssen, das könnte ich selber proggen. Was an Technik vorhanden ist, ist Windows 2000 Server, IIS, PHP und durchgehend IE 6.0. Vielleicht hat ja schon mal jemand sowas gesucht und kann mir was empfehlen.:floet: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 25. März 2003 Teilen Geschrieben 25. März 2003 Originally posted by jomama Am liebsten wäre mir, ich werf das Ding in einen Ordner, bastel ein Formular dazu und fertig. Naja, ganz so einfach ist's nicht, aber ich hab mal fix was gestrickt. <?php $d = dir("/home/ICQ"); //Startdirectory $suchwort = "test"; //Suchwort echo "Path: ".$d->path." wird durchsucht<br>\n"; while($entry=$d->read()) { $fp = fopen($d->path."/".$entry,"r"); $inhalt = fread($fp, filesize($d->path."/".$entry)); if (stristr($inhalt,$suchwort)!= FALSE) { echo ($d->path."/".$entry."<br>\n"); } fclose($fp); } $d->close(); ?>[/PHP] Das Dingen kannst Dir ja dann so anpassen, wie Du möchtest. Hoffe, das hat Dir etwas geholfen. ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 25. März 2003 Teilen Geschrieben 25. März 2003 Hallo, ich habe mal dieses Skript vor längerer Zeit getestet. Es lief eigentlich ganz gut. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jomama Geschrieben 26. März 2003 Autor Teilen Geschrieben 26. März 2003 Originally posted by *I C Q* Naja, ganz so einfach ist's nicht, aber ich hab mal fix was gestrickt. [...] Das Dingen kannst Dir ja dann so anpassen, wie Du möchtest. Hoffe, das hat Dir etwas geholfen. ICQ Den Ansatz hatte ich auch schon im Kopf, aber ich muss das so schreiben, das man neue Ordner nicht eintragen muss, also alle Unterordner automatisch durchsucht werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 26. März 2003 Teilen Geschrieben 26. März 2003 Hi, ich würde mal das Skript was palvoelgyi im Link angibt, ausprobieren. Das was das Skript von ICQ macht, bringt vielleicht ein Ergebnis aber je nachdem wieviel auf dem Server läuft und wieviel Dokumente durchsucht werden, gibt es mit Sicherheit ärger mit dem Admin. Eine Suche die nicht über einen Index geht, ist nunmal sehr langsam und Resourcen fressend. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jomama Geschrieben 26. März 2003 Autor Teilen Geschrieben 26. März 2003 Originally posted by palvoelgyi Hallo, ich habe mal dieses Skript vor längerer Zeit getestet. Es lief eigentlich ganz gut. Frank Hab das getestet, aber irgendwie läuft das mit IIS nicht.:confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 26. März 2003 Teilen Geschrieben 26. März 2003 Originally posted by jomama Den Ansatz hatte ich auch schon im Kopf, aber ich muss das so schreiben, das man neue Ordner nicht eintragen muss, also alle Unterordner automatisch durchsucht werden. Hmmm, OK, sprich: Wir arbeiten mit rekursiven Funktionen! Hab das Dingen mal ein wenig verbessert, probier's mal aus, vielleicht ist es ja das, was Du willst! <?php function scandir($dirname,$suchwort,&$arrfnd) { echo ("Durchsuche: $dirname<br>"); $handle = opendir($dirname); while (false != ($file = readdir($handle))) { if (is_dir ($dirname."/".$file) && $file!="." && $file != ".." && is_readable($dirname."/".$file)) { scandir ($dirname."/".$file,$suchwort,$arrfnd); } else { if (is_readable($dirname."/".$file)) { $fp = fopen($dirname."/".$file,"r"); $inhalt = fread ($fp,filesize ($dirname."/".$file)); if (stristr($inhalt,$suchwort)!=FALSE) { array_push ($arrfnd,$dirname."/".$file); } fclose($fp); } } } } $arrfnd = array(); $suchwort = "<?php"; //um z.B. alle Dateien zu finden, die php-Skripte enthalten scandir ("/home/ICQ/",$suchwort,$arrfnd); sort($arrfnd); reset($arrfnd); echo("<br>\"".htmlspecialchars($suchwort)."\" wurde in folgenden Dateien gefunden:<br>"); while (list ($nummer, $datei) = each($arrfnd)) { echo ($nummer.": ".$datei."<br>"); } ?> [/PHP] [i]Originally posted by Jaraz [/i] [b]Das was das Skript von ICQ macht, bringt vielleicht ein Ergebnis aber je nachdem wieviel auf dem Server läuft und wieviel Dokumente durchsucht werden, gibt es mit Sicherheit ärger mit dem Admin. [/b] Pffft, soll sich nicht so anstellen, der Admin! :D ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 26. März 2003 Teilen Geschrieben 26. März 2003 [EDIT] Zwei Dinge muss ich jetzt noch hinzufügen: 1. Hab's mal "gebenchmarked" und über ein grösseres Verzeichnis gejagt. Ergebnis: Es wurden 11097 Dateien (34667166 Byte) und 726 Verzeichnisse in 29.600617051125 Sekunden gescanned! Macht 1,1 MB/sec oder 374,9 Dateien/sec. Ist also tatsächlich nicht unbedingt das schnellste! 2. Hab's danach mal über ein Riesenverzeichnis laufen lassen und da ist es mir abgestürzt mit der Meldung Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 4422469 bytes) in /Skriptpfad/tstsearch.php on line 21 Es kann natürlich sein, dass er einfach versucht hat, eine Riesendatei zu öffnen oder einfach zu viele Rekursionen durchgeführt hat. Ich werd mal schauen, ob ich da noch was verbessern kann. [/EDIT] ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jomama Geschrieben 27. März 2003 Autor Teilen Geschrieben 27. März 2003 Danke für die Antworten ich programmier mir aus den Vorschlägen grad selbst ne Suchmaschine. Auf die rekursiven Funktionen wär ich nie gekommen. :uli Hab das jetzt soweit fertig, das der Index anständig geschrieben wird. Jetzt möcht ich gern pro Zeile, die ich indexiere Sonderzeichen wie !,:;.\ entfernen. Ich ersetz das ganze dannmit preg_replace mit einem leeren String. Wie muss ich denn den Suchpattern schreiben? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jomama Geschrieben 27. März 2003 Autor Teilen Geschrieben 27. März 2003 Originally posted by *I C Q* [EDIT] Zwei Dinge muss ich jetzt noch hinzufügen: 1. Hab's mal "gebenchmarked" und über ein grösseres Verzeichnis gejagt. Ergebnis: Es wurden 11097 Dateien (34667166 Byte) und 726 Verzeichnisse in 29.600617051125 Sekunden gescanned! Macht 1,1 MB/sec oder 374,9 Dateien/sec. Ist also tatsächlich nicht unbedingt das schnellste! 2. Hab's danach mal über ein Riesenverzeichnis laufen lassen und da ist es mir abgestürzt mit der Meldung Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 4422469 bytes) in /Skriptpfad/tstsearch.php on line 21 Es kann natürlich sein, dass er einfach versucht hat, eine Riesendatei zu öffnen oder einfach zu viele Rekursionen durchgeführt hat. Ich werd mal schauen, ob ich da noch was verbessern kann. [/EDIT] ICQ Das wird mein Problem Gottseidank nicht sein. Ich habs so geschrieben, das nur Dateien aufgenommen werden, die als Endung .php, .htm oder .html haben. Die hab ich mir mal in einer Liste ausgeben lassen und kam nur auf etwa sechshundert. Mein Index ist jetzt schlappe 700kB groß. Also zu vernachlässigen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jomama Geschrieben 27. März 2003 Autor Teilen Geschrieben 27. März 2003 Okay, das mit den Sonderzeichen hat sich erledigt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 28. März 2003 Teilen Geschrieben 28. März 2003 Hi, in der aktuellen c't ist dazu übrigens ein Artikel. Dort wird das Perl Skript Perlfect näher vorgestellt. http://www.perlfect.com/freescripts/search/ Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.