Hello,
PHP hat zwar seit irgendwann in der 4er-Version einen Benutzungszähler für Ressourcen und eine "garbage collection ähnlich JAVA", aber es gibt keine Aussage darüber, wann der Garbage Collector denn genau greift.
»Thanks to the reference-counting system introduced with PHP 4's Zend Engine, a resource with no more references to it is detected automatically, and it is freed by the garbage collector. For this reason, it is rarely necessary to free the memory manually.«
[http://de3.php.net/manual/en/language.types.resource.php]Das ist m.E. eine sehr genau Aussage darüber, wann der GC anspringt.
Nein, das ist Allgemein-Blah-Blah. Es sagt eben nichts aus darüber, wann der Garbage Collector anspringt. An anderern Stellen im Netz kann man sehr wohl nachlesen, dass er das nicht zeitnah tut, sondern manchmal mit erheblicher Verzögerung - wie bei JAVA.
Wenn ein Überschreiben der letzten Ressource-Variable, die bereits auf ein Ressource-Handle verweist, die unverzügliche ordnungsgemäße Rückgabe des Ressource-Handles zur Folge hätte, würde man ja keinen Garbage Collector mehr benötigen.
Da ich die gegenteiligen Aussagen nicht überprüfen kann, ohne in den Quellcode zu schauen, werde ich mich da also durchbeißen müssen.
Ich weiß nur, dass ich nicht eine zeitlang (bis die Firma verkauft wurde) damit beauftragt worden wäre, genau die "das braucht man nicht mehr"-Stellen zu finden und wieder klassisch zu lösen, wenn es nicht nützlich gewesen wäre. Die waren da echt geizig und hätten mir dann gewiss kein Geld bezahlt dafür...
Wie heißt das Modul, dass das "reference-counting" vornimmt? Muss ja irgendwie zu finden sein und dann zumindest auch so ungefähr zu verstehen, was da wann abläuft.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
