Zum Inhalt springen

[PHP] Schnelle Suche mit geringen Rechenaufwand


Empfohlene Beiträge

Hi zusammen,

mich würde mal interessieren, wie man schnelle Suchalgorithmen in Dateien mit PHP bauen kann. Also eine Suche, wo man z.B. eine String eingibt und dann ein bestimmter Ordner alle Dateien nach diesem String durchsucht.

Wenn ich mir nun mit file() o.ä. jede Datei schnappe und jede Zeile nach dem String durchsuche würde das bei 1000 Dateien einiges an Rechenzeit schlucken. Darum frage ich mich, was speziell in PHP die effizienteste Suche ist... womit habt ihr bisher die besten (= schnellsten) Erfahrungen?!

Schreibt mir einfach mal eure bisherigen Erlebnisse.

Danke!

Link zu diesem Kommentar
Auf anderen Seiten teilen

welches dateisystem auf welcher architektur?

falls es windows mit ntfs ist, ist der indexdienst dein freund.

damit ist eine suche mittels sql-ähnlicher syntax möglich:

SELECT * FROM SCOPE(‘ SHALLOW TRAVERSAL OF“c:\windows†‘,‘ DEEP TRAVERSAL OF “c:\windows\system32â€,“c:\windows\system†‘)WHERE FILENAME LIKE ‘WIN%’

falls es linux mit z.b. ext2/3 ist, tuts ein einzeiler mit "find" auch, den du in eine datei umleitest.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

theoretisch hast du da ein großes Problem ^^

denn ab ca. 4000 Schleifendurchläufen in einem Verzeichnis sagt PHP "Ende" und bricht ab.

..k.A. könnte eine Servereinstellung sein.

Am besten: Alle Daten die relevant sind in eine DB auslagern. Oder ein Maximum an Dateien pro verzeichnis.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Entweder diese Lösung...

Am besten: Alle Daten die relevant sind in eine DB auslagern. Oder ein Maximum an Dateien pro verzeichnis.

...oder aber auf jeden Fall eine OS-Lösung verwenden... (siehe 1. Antwort)

Meiner Meinung nach kannst Du das mit PHP so nicht performant abbilden.

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

also ich benutze für sowas eine Volltextsuchmaschine. Der Index wird in meinem Fall einmal pro Nacht erzeugt (cronjob) Ich nutze Falle Swish-e (www.swish-e.org). Ist OpenSource, läuft unter Win und Linux, sehr schnell und mächtig.

Prinzipiell gehen aber auch andere (Namazu, Harvest, phpdig...), wenn du nur unter Windows arbeitest ist der MS Index Server eine gute wahl, der indexiert laufend.

Timo

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...