rhalte den Referenzzähler eines Objekts in PH

Ich erkenne, dass die knifflige Antwort auf diese Frage lautet: "Sie tun es nicht.", Aber hören Sie mich an.

rundsätzlich arbeite ich auf einem Active-Record-System mit SQL. Um zu verhindern, dass Objekte für dieselbe Datenbankzeile doppelt vorhanden sind, behalte ich für jedes aktuell geladene Objekt ein 'Array' in der Factory (mit einer Autoincrement-ID als 'ID') Schlüssel)

Das Problem ist, dass, wenn ich versuche, mehr als 90.000 Zeilen durch dieses System zu verarbeiten, PHP auf Speicherprobleme stößt. Dies lässt sich sehr leicht lösen, indem alle paar hundert Zeilen eine Garbage-Collection ausgeführt wird. Da die Factory jedoch eine Kopie jedes Objekts speichert, wird die Garbage-Collection von PHP keinen dieser Knoten freigeben.

Die einzige Lösung, die ich mir vorstellen kann, besteht darin, zu überprüfen, ob die Referenzanzahl der in der Fabrik gespeicherten Objekte gleich eins ist (d. H., Nichts verweist auf diese Klasse), und sie gegebenenfalls freizugeben. Dies würde mein Problem lösen, aber PHP hat keine Referenzzählmethode? (außer debug_zval_dump, aber das ist kaum brauchbar).

Antworten auf die Frage(8)

Ihre Antwort auf die Frage