Hallo Team,
wie es aussieht haben wir das Laufzeitproblem beim Airbis Flugimport bei
JT in den Griff bekommen.
Schuld für die extreme Verlangsamung ist die mit PHP 5.3 eingeführte
Garbage Collection. Dies führt bei Ittereationen über große Arrays zu
einem nicht unerheblichen Performanzeinbruch.
Wir starten jetzt das Importscripts mit php -dzend.enable_gc=0 , was die
Garbage Collection für diesen Import ausschaltet. Dadurch sind die
Laufzeiten wieder wie unter PHP 5.2 und der Speicherverbrauch ist
dadurch immer noch geringer, als bei PHP 5.2.
Um den Garbage Collector nur für bestimmte Programmteile auszustellen,
könnt ihr dies über gc_disable(); im Code machen. Es wird empfohlen
vorher gc_collect_cycles(); aufzurufen, damit die Collection bereinigt
wird und der Speicher freigegeben wird.
Mit gc_enable(); könnt ihr die Garbage Collection wieder aktivieren.
Mit gc_enabled(); könnt ihr abfragen, ob die Garbage Collection
aktiviert ist.
Da diese Funktionen erst ab PHP 5.3 verfügbar sind, solltet ihr ggf.
vorher eine Versionsabfrage oder function_exists() ausführen.
Ich danke Marcus für die Unterstützung, beim Finden der Codequelle, das
Profiling, seine Verbesserungen und Vorschläge.
Ich danke Viktoras für das Finden des Problems.
Und ich danke auch Stefan für seine Unterschtützung.
Und natürlich danke ich dem gesamten Team für die Unterstützung und
Ratschläge!
--
Viele liebe Grüße
Stefan Wieden
- JustTheOldGuy