Der folgende Patch behebt den Fehler, dass 'Indexed Search' bei aktivierter Indexierung externer URLs viele Dateien in typo3temp ablegt, die alle mit 'EXTERNAL_URL' beginnen und 0 Byte groß sind.
Bei größeren oder stark besuchten Webpräsenzen können sich so innerhalb kurzer Zeit mehrere hunderttausende Dateien ansammeln, die je nach verwendetem Dateisystem die Geschwindigkeit der Website drastisch verringern können.
Eine Websuche lieferte einige Einträge zu dem Thema, die ältesten mehrere Jahre alt und die jüngsten wenige Wochen. Eine Lösung wurde nirgends erwähnt. Es gab lediglich den Tipp, die Indexierung externer URLs abzuschalten. Offensichtlich handelte es sich hier um einen Bug, der seit Jahren in allen TYPO3-Versionen vorhanden ist.Der Patch bewirkt das Löschen der von tempnam() angelegten Datei und verhindert die Indexierung, wenn bei tempnam() ein Fehler auftrat.
typo3-4.2.8-class.indexer.php.no-external_url-in-typo3temp.patch
Da ein stetig wachsendes Verzeichnis durchaus kritisch werden kann, wenn kein geeignetes Monitoring vorhanden ist, der Bug schon seit Jahren besteht, ein Entwickler den Patch nicht annehmen wollte und ein Abonnement einer weiteren Mailingliste nur zur Vermehrung von Datenmüll beigetragen hätte, veröffentliche ich den Patch auf diese Weise.
Der Bug ist bei typo3.org im Bugtracker verzeichnet: http://forge.typo3.org/issues/21387. Seit 2010-03-29 ist dieser Fehler in tx_indexedsearch "resolved".
Einen Tag später ist ein anderes typo3temp-Verzeichnis mit über 150000 Javascript-Dateien sehr voll. Auch hier ergibt die Recherche, dass der Bug schon lange bekannt ist. Dazu gab es die Empfehlung, bei "GMENU_LAYERS / TMENU_LAYERS" die "layer_menu_id" zu setzen.
In TSref findet sich folgendes dazu:
layer_menu_id | string | If you want to specifically name a menu on a page. Probably you don't need that! Warning: Don't use underscore and special characters in this string. Stick to alpha-numeric. |
Man braucht es also wahrscheinlich nicht. Aber wenn man keine ID vergibt, wird mittels "md5(microtime())" auf unsichere Weise ein "Unique-Filename" erzeugt. Da sich der String natürlich ständig ändert und es keine Verwaltung (Löschen) für diese temporär genutzten Dateien gibt, kann das Verzeichnis bei stark besuchten Websites schnell mit zehntausenden oder hunderttausenden Dateien gefüllt werden. Der Effekt ist der gleiche wie bei dem oben erwähnten Bug. Die Website wird immer laaangsamer.
Der Patch ersetzt microtime() durch ein Kürzel für das Menü und den Hostnamen. Das ist auch nur ein Workaround.
typo3-4.3.2-no-typo3temp-fill-with-javascript.patch
Auch dieser Bug ist mittlerweile bei typo3.org im Bugtracker verzeichnet: http://forge.typo3.org/issues/21388. Interessant ist der Kommentar von Jorgo S. am 2013-04-03:
Wow... 2 years of nothing and then this is what the community gets?
Der TYPO3 Source ist voll mit Code a la "md5(microtime())
".
Es gibt keine Bibliotheksfunktionen für die
Verwaltung temporärer Dateien. Wenn keine eindeutige ID wie
beispielsweise die oben erwähnte layer_menu_id
zur
Verfügung steht, können die betreffenden Elemente als Ganzes
erfasst werden. Eine Möglichkeit stellt die Serialisierung der
Variable des anzuzeigenden Elements dar:
"md5(serialize(element-array-variable))
"
Hier ein weiterer Patch gegen extrem viele Javascript-Dateien: typo3-4.1.2-no-typo3temp-fill-with-javascript-INPfixMD5-1.patch
Der Bug ist bei typo3.org im Bugtracker verzeichnet: http://forge.typo3.org/issues/22311.
Auch hier gibt es noch einen interessanten Kommentar nach mehreren Jahren (am 2013-04-01):
I'm closing all the other _LAYERS related issues currently, but a small grep showed that the code in question here is still present in 6.1,...
Ein Beispiel zeigt eine einfache Überwachungsmöglichkeit aller typo3temp-Verzeichnisse eines Webservers mittels eines Tools aus dem ngtx-Paket:
# time knoerre maxdirentries/2/home/@/html/typo3temp /home/user1234/html/typo3temp=8877 [total = 61362] 8877 real 0m0.216s user 0m0.008s sys 0m0.204sDas Löschen von Javascript-Dateien ist mit dem Tool "direntries" aus dem ngtx-Paket sehr schnell möglich. Dieses Beispiel zeigt, wie Javascriptdateien älter als ein Tag gelöscht werden:
# direntries -D -e .js 554798
Zum Monitoring von TYPO3-Webpräsenzen gibt es einen kurzen Artikel beim T3N-Magazin: Website-Monitoring mit Nagios
Copyright © 2004-2021 Frank W. Bergmann
Alle Rechte vorbehalten.
Rechtliche Hinweise