Mailinglisten-Archive |
Yannik Hampe schrieb:
>
> Jörn Grube wrote:
>> Ich hab mal wieder ein Problem und brauch Denkhilfen :)
>> Mal vorweg: auf meinem Server läuft PHP 4.4.7 und daran kann ICH nichts
>> ändern (Hosteurope ist der Hoster).
>> [...]
>> Mir gehts eigentlich nur darum, wie ich möglichst schnell und ohne den
>> Server zu sehr in die Knie zu zwingen an die Ersetzungen komme, wie ich
>> dann ersetze und ausgebe ist mir klar. Hab schon auf diversen Seiten
>> nach entsprechenden Klassen geguckt, aber nix gefunden.
>
> Naja... Ich könnte mir vorstellen, dass dies am schnellsten wäre:
> $text ='ich bin ein text in dem was ersetzt werden soll';
> $db =...; //db-Link
> while ($row = $db->query('SELECT wort,replace FROM ...'))
> {
> $worte[] =$row[0];
> $neu[] ="<abbr ..>$row[0]</...>";
> }
> str_replace($worte, $neu, $text);
>
> CPU mäßig sollte das sehr sparsam sein. Der Ramverbauch ist bei 1K
> Wörtern dabei noch vertretbar gering.
> Du könntest allerdings nochmal was rausholen, wenn du die acronyme nicht
> in einer DB, sondern in einer Datei speicherst. Am einfachsten wäre wohl
> eine Datei mit einem Wort pro Zeile:
> ---- Datei Worte
> wort1
> wort2
> ...
> ---- Datei Ersatz
> <abbr ...>wort1</abbr>
> <abbr ...>wort2</abbr>
> ...
>
> Dann kannst du per
> str_replace(file('Worte'),file('Ersatz'),$text);
> sehr einfach und schnell ersetzen. Solange es nur 1000 Wörter sind,
> sollte die Methode vom RAM her keinen Stress machen. Dafür musst du
> immer die beiden Dateien synchron halten. Aber ich gehe davon aus, dass
> das kein Problem ist, da du die Dateien nicht ständig änderst. Du
> solltest ggf. flock() verwenden.
Danke, damit sollte ich was anfangen können :)
LG aus Berlin Jörn
php::bar PHP Wiki - Listenarchive