PHP wird normalerweise so bereitgestellt, dass ein PHP-Prozess mehrere Anfragen nacheinander abarbeitet. Während einer einzelnen Anfrage kann ein Skript nun Speicher reservieren. Am Ende wird diese Erinnerung frei sein. So weit, ist es gut. Jetzt sind die meisten Betriebssysteme so aufgebaut, dass der Speicher, der einem Prozess zugewiesen wurde, auch dann frei bleibt, wenn er freigegeben wird. Die Annahme besteht darin, dass ein Programm, das einmal Speicher benötigt, den Betrag erneut benötigt und es billiger ist, es für den Prozess verfügbar zu halten, als es zurückzunehmen. So kann es bei einer PHP-Implementierung vorkommen, dass eine Anfrage sehr viel Speicher beansprucht und der Speicher dann an den Prozess gebunden ist und nicht mehr für das System verfügbar ist. Außerdem ist es ein möglicher Hinweis auf einen Fehler, wenn ein Prozess viel mehr Speicher beansprucht als erwartet. Für diese beiden Dinge dient die memory_limit als Sicherheitsnetz.
Wenn Ihre Anwendung mehr Arbeitsspeicher benötigt, ist es in der Regel in Ordnung, das Limit zu erhöhen. Der absolute Höchstwert ist abhängig vom System (available RAM
/number of worker processes
könnte eine grobe Formel sein, grob wie es anderen Speicher nicht benötigt) Normalerweise sollten Sie nur um einen benötigten Betrag erhöhen.
Natürlich, wenn Sie dies ändern, müssen Sie daran denken, wenn Sie zu anderen Systemen wechseln. In der Regel bedeutet eine geringere Speicherbelegung auch eine schnellere Ausführung. Daher sollten Sie versuchen, zu überprüfen, ob Sie Ihren Code optimieren können.
Randbemerkung: Ich habe das Speichermodell oben absichtlich vereinfacht, virtuelle Speicherseiten zu ignorieren und wie Betriebssysteme optimieren dort
Die Speichergrenze sogar einen höheren Wert gesetzt werden konnte. 256-512 MB sind nicht ungewöhnlich. Aber für den Rest hat Kat absolut recht; stellen Sie sicher, dass Sie es rechtfertigen können. – giorgio
Vielen Dank, sehr hilfreich – user69153