Ich habe mehr als 60 % freien RAM, kann aber keine einfache PHP-Datei ausführen

Ich habe mehr als 60 % freien RAM, kann aber keine einfache PHP-Datei ausführen

.phpIch versuche, eine einfache Datei in meiner lokalen Umgebung auszuführen :
(Ubuntu 15.10 – Intel® Core™ i7-4600U CPU @ 2,10 GHz × 4 – 64-Bit – 8 GB RAM)

Bildschirmfoto

Sie sehen also, dass ich über 60 % freien RAM habe, aber ich weiß nicht, warum immer dieser Fehler auftritt:

Erreur : Allowed memory size of 4244635648 bytes exhausted (tried to allocate 4294967674 bytes).

Ich habe versucht, die Lösung für dieses ähnliche Problem zu finden:Verknüpfung. Aber es löst mein Problem nicht.

Danke

Antwort1

PHP verfügt über eine Einstellung, die begrenzt, wie viel Speicher ein einzelnes Skript verwenden kann. Wenn Sie diesen Wert überschreiten, spielt es keine Rolle, wie viel RAM Ihr System insgesamt hat.

Wenn Sie die Konsole verwenden, ist die betroffene Datei wahrscheinlich /etc/php5/cli/php.ini und enthält die folgende Zeile:

memory_limit = XXXXXXX

Um die Beschränkung vollständig aufzuheben, ändern Sie sie wie folgt:

memory_limit = -1

Wie andere jedoch bereits kommentiert haben, versucht Ihr Skript bereits, über 4 GB RAM zu verwenden. Vielleicht sollten Sie Ihr Vorgehen überdenken oder nach Fehlern im Code suchen, die dies verursachen könnten, wie eine Art Endlosschleife. Die meisten PHP-Skripte, sogar CLI-Skripte, sollten selbst für die schwierigsten Aufgaben weniger als 256 MB verwenden. PHP ist nicht dafür ausgelegt, eine 2 GB große Datei in den Speicher zu laden und in Variablen daran zu arbeiten oder ganze Datenbanken in Arrays zu speichern. Viele Programmierer, mit denen ich gearbeitet habe, machen solche Fehler. Legen Sie den Speicher stattdessen dort ab, wo er am besten funktioniert – lassen Sie ihn in der Datenbank und arbeiten Sie Zeile für Zeile daran, oder lassen Sie ihn im Dateisystem und machen Sie dasselbe.

Und wenn es sich um ein Webskript handelt und nicht um etwas, das Sie über die CLI ausführen, möchten Sie die Einstellung für das Speicherlimit wahrscheinlich nicht ändern, zumindest nicht im Bereich von 4 GB oder mehr. Das ist keine gute Idee für einen Webserver, der mehrere Clients bedient.

verwandte Informationen