Diese Fehlermeldung wird angezeigt, irgendwelche Vorschläge?
Zulässige Speichergröße von 33554432 Bytes erschöpft (versucht, 43148176 Bytes zuzuweisen) in PHP
php
memory-management
memory-limit
Panidarapu
quelle
quelle
Antworten:
Endlich fand ich die Antwort:
Fügen Sie dies einfach in die folgende Zeile ein, bevor Sie einen Fehler in Ihrer Datei erhalten
ini_set('memory_limit', '-1');
Es wird unbegrenzte Speichernutzung des Servers erfordern, es funktioniert gut.
Vielen Dank für Ihre Vorschläge Freunde.
quelle
UNLIMITED
.Hier sind zwei einfache Methoden, um das Limit für Shared Hosting zu erhöhen:
Wenn Sie Zugriff auf Ihre PHP.ini-Datei haben, ändern Sie die Zeile in PHP.ini. Wenn in Ihrer Zeile 32 Millionen angezeigt werden, versuchen Sie es mit 64 Millionen:
memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)
Wenn Sie keinen Zugriff auf PHP.ini haben, fügen Sie dies einer .htaccess-Datei hinzu:
php_value memory_limit 64M
quelle
Ihr Skript verwendet zu viel Speicher. Dies kann in PHP häufig vorkommen, wenn Sie eine außer Kontrolle geratene Schleife haben und bei jedem Durchgang der Schleife Objekte erstellen oder Arrays hinzufügen.
Suchen Sie nach Endlosschleifen.
Wenn dies nicht das Problem ist, versuchen Sie, PHP zu helfen, indem Sie Objekte zerstören, mit denen Sie fertig sind, indem Sie sie auf null setzen. z.B.
$OldVar = null;
Überprüfen Sie den Code, in dem der Fehler tatsächlich auftritt. Würden Sie erwarten, dass diese Zeile eine enorme Menge an Speicher reserviert? Wenn nicht, versuchen Sie herauszufinden, was schief gelaufen ist ...
quelle
Tun :
ist niemals gut Wenn Sie eine sehr große Datei lesen möchten, empfiehlt es sich, sie Stück für Stück zu kopieren. Versuchen Sie den folgenden Code für Best Practice.
quelle
while
Schleife zu schließen:fclose($file)
Es ist leider einfach, in PHP so zu programmieren, dass Speicher schneller verbraucht wird, als Sie denken. Das Kopieren von Zeichenfolgen, Arrays und Objekten anstelle von Referenzen reicht aus, obwohl PHP 5 dies automatischer als in PHP 4 tun soll. Der vollständige Umgang mit Ihrem Datensatz über mehrere Schritte ist jedoch auch verschwenderisch im Vergleich zur Verarbeitung der kleinsten logischen Einheit zu einer Zeit. Das klassische Beispiel ist das Arbeiten mit großen Ergebnismengen aus einer Datenbank: Die meisten Programmierer rufen die gesamte Ergebnismenge in ein Array ab und durchlaufen sie dann ein- oder mehrmals mit
foreach()
. Es ist viel speichereffizienter, einewhile()
Schleife zu verwenden, um jeweils eine Zeile abzurufen und zu verarbeiten. Gleiches gilt für die Verarbeitung einer Datei.quelle
Wenn Sie große Dateien lesen möchten, sollten Sie sie Stück für Stück lesen, anstatt sie sofort zu lesen.
Es ist ganz einfach: Wenn Sie eine 1 MB große Datei gleichzeitig lesen, wird mindestens 1 MB Speicher gleichzeitig benötigt, um die Daten zu speichern.
Sie sollten sie also Stück für Stück mit
fopen
& lesenfread
.quelle
$fh = fopen($folder.'/'.$filename, "rb") or die(); $buffer = 1024*1024; while (!feof($fh)) { print(fread($fh, $buffer)); flush(); } fclose($fh);
Ich habe das gleiche Problem in PHP7.2 mit Laravel 5.6 gehabt. Ich erhöhe nur die Anzahl der Variablen
memory_limit = 128M
in php.ini, wie es meine Anwendungen erfordern. Es könnte 256M / 512M / 1048M sein ..... Jetzt funktioniert es gut.quelle
Ich hatte auch das gleiche Problem, suchte erfolglos nach phpinfo.ini, php.ini oder .htaccess-Dateien. Schließlich habe ich mir einige PHP-Dateien angesehen, sie geöffnet und die darin enthaltenen Codes auf Speicher überprüft. Schließlich war diese Lösung das, was ich herausgebracht habe und es hat für mich funktioniert. Ich habe WordPress verwendet, daher funktioniert diese Lösung möglicherweise nur bei Problemen mit der Speicherbeschränkung für WordPress. Meine Lösung: Öffnen Sie die Datei default-constants.php im Ordner / public_html / wp-includes . Öffnen Sie diese Datei mit dem Code-Editor und suchen Sie die Speichereinstellungen im
wp_initial_constants
Bereich oder drücken Sie einfach Strg + F, um das Wort "Speicher" zu finden. Dort kommst du rüberWP_MEMORY_LIMIT
undWP_MAX_MEMORY_LIMIT
. Erhöhen Sie es einfach, es war 64 MB in meinem Fall, ich habe es auf 128 MB und dann auf 200 MB erhöht.Übrigens, bitte machen Sie nicht den folgenden Code, weil das eine schlechte Praxis ist:
quelle
wp-config.php
, dass sie durch zukünftige WordPress-Updates nicht überschrieben werden. Außerdem werden sich einige Sicherheits-Plugins (wie zum Beispiel WordFence) beschweren, wenn 'Kern'-WordPress-Dateien geändert werden ...wp-config.php
und fügen Sie einfach die beiden Zeilen dort hinzu (d. H.define( 'WP_MEMORY_LIMIT', '200M' );
Unddefine( 'WP_MAX_MEMORY_LIMIT', '256M' );
. Im Gegensatz zu den Dateien auf dem ' Kern' -WP (nämlich alles unterwp-includes
), die durch WP-Upgrades überschrieben werden,wp-config.php
nicht - es ist genau dafür da der genaue Zweck des Überschreibens von WP-Konstanten!-1
ist gut für kurzfristige Prozesse. Zum Beispiel ein PHP-Builder-Container, der zum Ausführen von Komponententests oder zur Installation von / etc. Führen Sie Ihre Produktionsstätte nur nicht so aus.Sie können den für PHP-Skripte zulässigen Speicher erhöhen, indem Sie die folgende Zeile über allen Codes im Skript ausführen:
Und ordnen Sie auch die unerwünschten Variablen im Skript zu.
Überprüfen Sie diese PHP-Bibliothek: Speicher mit PHP freigeben
quelle
quelle
Ich stelle fest, dass viele Antworten nur versuchen, die Menge an Speicher zu erhöhen, die einem Skript zugewiesen wird, das seinen Platz hat, aber meistens bedeutet dies, dass etwas aufgrund einer unvorhergesehenen Menge an Volumen oder Größe zu liberal mit Speicher ist. Wenn Sie nicht der Autor eines Skripts sind, sind Sie natürlich dem Autor ausgeliefert, es sei denn, Sie fühlen sich ehrgeizig :) Die PHP-Dokumente sagen sogar, dass Speicherprobleme auf " schlecht geschriebene Skripte " zurückzuführen sind.
Es sollte erwähnt werden, dass
ini_set('memory_limit', '-1');
(keine Begrenzung) Serverinstabilität verursachen kann als0 bytes free = bad things
. Finden Sie stattdessen ein angemessenes Gleichgewicht zwischen dem, was Ihr Skript versucht, und der Menge des verfügbaren Speichers auf einem Computer.Ein besserer Ansatz: Wenn Sie der Autor des Skripts sind (oder ehrgeizig), können Sie solche Speicherprobleme mit xdebug debuggen . Die neueste Version (2.6.0 - veröffentlicht am 29.01.2018) brachte eine Speicherprofilerstellung zurück, die zeigt, welche Funktionsaufrufe viel Speicher verbrauchen. Es zeigt Probleme im Skript auf, die sonst schwer zu finden sind. Normalerweise befinden sich die Ineffizienzen in einer Schleife, die das empfangene Volumen nicht erwartet, aber jeder Fall wird dem Leser als Übung überlassen :)
Die xdebug-Dokumentation ist hilfreich, besteht jedoch aus drei Schritten:
apt-get
undyum
etc.xdebug.profiler_enable = 1
,xdebug.profiler_output_dir = /where/ever/
quelle
Wenn Sie versuchen, eine Datei zu lesen, belegt dies Speicher in PHP. Wenn Sie beispielsweise versuchen, eine MP3-Datei zu öffnen und zu lesen (z. B. $ data = file (" http://mydomain.com/path/sample.mp3 "), wird alles in den Speicher gezogen .
Wie Nelson vorschlägt, können Sie daran arbeiten, Ihr maximales Speicherlimit zu erhöhen, wenn Sie tatsächlich so viel Speicher benötigen.
quelle
Wir hatten eine ähnliche Situation und haben versucht, oben in den Antworten ini_set ('memory_limit', '-1') angegeben; und alles funktionierte gut, komprimierte Bilddateien größer als 1 MB in KBs.
quelle
Schreiben
ini_set('memory_limit', '-1');
in deiner index.php oben nach dem öffnen des php tag
quelle
Ich habe dieselbe Fehlermeldung erhalten, nachdem ich in Wordpress zu einem neuen Thema gewechselt habe. PHP lief Version 5.3, also wechselte ich zu 7.2. Das hat das Problem behoben.
quelle
Wenn Sie ein Shared Hosting verwenden, können Sie das Inkrement der PHP-Größenbeschränkung nicht erzwingen.
Gehen Sie einfach zu Ihrem cpanel und aktualisieren Sie Ihre PHP-Version auf 7.1 und höher, dann können Sie loslegen.
quelle
WordPress-Benutzer fügen Zeile hinzu:
@ini_set('memory_limit', '-1');
in wp-settings.php finden Sie im im WordPress installierten Stammordner
quelle
Ich hatte mein Hosting nicht erneuert und die Datenbank war schreibgeschützt. Joomla musste die Sitzung schreiben und konnte es nicht tun.
quelle
Ich hatte das gleiche Problem, das PHP in der Kommandozeile laufen ließ. Vor kurzem hatte ich Änderungen an der Datei php.ini und habe einen Fehler beim Ändern der Datei php.ini gemacht
Dies ist für PHP7.0
Ich hatte gesetzt
memory_limit = 256
(was bedeutet256 bytes
)statt
memory_limit = 256M
(was bedeutet256 Mega bytes
).Nachdem ich es korrigiert hatte, lief mein Prozess einwandfrei.
quelle
Führen Sie diesen Befehl in Ihrem Magento-Stammverzeichnis aus
php -d memory_limit=4G bin/magento
quelle
Wenn Sie Laravel verwenden, verwenden Sie diese Methoden
public function getClientsListApi(Request $request){ print_r($request->all()); //for all request print_r($request->name); //for all name }
anstatt
public function getClientsListApi(Request $request){ print_r($request); // it show error as above mention }
quelle