Beim Erstellen eines neuen Arrays (und Elements) mit einfachen PHP-Arrays verwendet der folgende Code 360 Bytes in PHP 5.3 mit und ohne APC. Selbst das Hinzufügen eines Elements zu $ _GET verwendet nur 304 Bytes. Wenn Sie jedoch ein zusätzliches Element in $ _SERVER erstellen, verwendet derselbe Code 4.896 Bytes!
$mem = memory_get_usage();
//$array = array('HTTP_X_REQUESTED_WITH' => NULL);
$_SERVER['HTTP_X_REQUESTED_WITH'] = NULL;
//$_GET['HTTP_X_REQUESTED_WITH'] = NULL;
print (memory_get_usage() - $mem).' bytes<br>';
print memory_get_usage().' bytes (process)<br>';
print memory_get_peak_usage(TRUE). ' bytes (process peak)<br>';
print (memory_get_usage() - $mem).' bytes<br>';
Was in der Welt bewirkt, dass das $ _SERVER-Array so viel zusätzlichen Speicher verwendet?
5kb Overhead in zufälligen Orten für NULL-Werte ist sicherlich etwas zu beachten. Wenn jedoch die Hash-Tabelle die Antwort ist, kann ich das Problem möglicherweise durch das Auffüllen eines einfachen PHP-Arrays und die Überwachung der Speicherauslastung duplizieren. – Xeoncross
Ja, ich würde zuerst den Inhalt von $ _SERVER ausgeben und zuerst mit Ihrer eigenen Kopie testen. –
Ok, ich habe nur langsam ein Array erstellt und bei 8, 16, 32, 64 usw. zeigt das Array größere Speichersprünge von 128, 160, 224 und 352 Bytes. Dies addiert sich jedoch nicht, da mein Server-Array nur 70 Elemente enthält (also lange vor dem nächsten Sprung von 128 Elementen), aber für nur ein weiteres "NULL" -Element um mehr als 4 KB springt. – Xeoncross