Aktueller Standort: Startseite> Neueste Artikel> Wie setze ich vernünftigere PHP -Speichergrenzwerte in Kombination mit memory_get_usage und ini_set fest?

Wie setze ich vernünftigere PHP -Speichergrenzwerte in Kombination mit memory_get_usage und ini_set fest?

gitbox 2025-06-30

Die Optimierung des Speicherverbrauchs war bei der Entwicklung von PHP -Anwendungen schon immer ein entscheidendes Thema. Eine angemessene Speicherverwaltung kann nicht nur aus Speicherfehlern vermeiden, sondern auch die Anwendungsleistung verbessern. PHP bietet viele Funktionen zur Überwachung und Anpassung des Speicherverbrauchs, darunter maßgeschneiderte marka_get_usage () und ini_set () üblicherweise verwendete Tools. In diesem Artikel wird untersucht, wie diese beiden Funktionen kombiniert werden, um vernünftigere PHP -Speichergrenzen festzulegen, um sicherzustellen, dass PHP -Skripte bei der Verarbeitung großer Datenmengen oder komplexer Vorgänge voreingestellte Speichergrenzwerte nicht überschreiten.

1. Einführung in die Funktion MEAM und MEAM und MEAME_GET_USAGE ()

MEAMMEIT_GET_USAGE () ist eine von PHP bereitgestellte Speicherverwaltungsfunktion, um die Speicherverwendung des aktuellen PHP -Skripts zu erhalten. Es gibt die Speichergröße zurück, die das aktuelle Skript in Bytes verwendet hat. Wenn eine genauere Speicherüberwachung erforderlich ist, können Sie diese Funktion verwenden, um die Speicherverwendung dynamisch anzusehen.

 <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">memory_get_usage</span></span><span>();  </span><span><span class="hljs-comment">// Ausgabe aktueller Speicherverbrauch(Byte)</span></span><span>
</span></span>

Darüber hinaus kann Memory_get_usage () auch einen optionalen Parameter akzeptieren, um anzugeben, ob die Speicherverwendung von PHP -internen Puffern enthalten ist:

 <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">memory_get_usage</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);  </span><span><span class="hljs-comment">// Einschließlich Speicherverbrauch von internen Puffern</span></span><span>
</span></span>

Diese Funktion kann den Entwicklern helfen, den Speicherverbrauch in Echtzeit bei der Ausführung komplexer Vorgänge zu verstehen, wodurch die Speichereinstellungen angepasst und Skriptabfälle aufgrund eines übermäßigen Speicherverbrauchs vermieden werden.

2. Einführung in die Funktion ini_set ()

Ini_Set () ist eine Funktion, die von PHP verwendet wird, um die Konfigurationsoptionen dynamisch zu ändern. Mit dieser Funktion können Sie die PHP -Konfigurationselemente, einschließlich Speicherlimits, zur Laufzeit ändern. Für PHP -Speichergrenzen wird normalerweise das Maße für die Memory_Limit -Konfiguration verwendet, die die maximale Speichergröße steuert, die ein PHP -Skript konsumiert.

 <span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'memory_limit'</span></span><span>, </span><span><span class="hljs-string">'256M'</span></span><span>);  </span><span><span class="hljs-comment">// Setzen Sie die Speichergrenze auf 256MB</span></span><span>
</span></span>

In einigen Fällen reicht die Standardspeichergrenze möglicherweise nicht aus, um große Datenmengen zu verarbeiten, oder es kann ein Speicherüberlauffehler beim Ausführen komplexer Computeraufgaben auftreten. Zu diesem Zeitpunkt können Sie ini_set () verwenden, um das Speicherlimit dynamisch so anzupassen, dass sie unterschiedliche Anforderungen erfüllen.

3.. Setzen Sie Speichergrenzwerte in Kombination mit memory_get_usage () und ini_set ()

Durch Kombinieren von memory_get_usage () und ini_set () können Entwickler die Speicherverwendung während des PHP -Skriptbetriebs dynamisch überwachen und die Speichergrenzen in Echtzeit nach Bedarf anpassen. Hier finden Sie ein einfaches Beispiel, das zeigt, wie Sie den Speicher überwachen und Speichergrenzen angemessen anpassen, während Skripte ausgeführt werden:

 <span><span><span class="hljs-comment">// Holen Sie sich die aktuelle Speicherverwendung</span></span><span>
</span><span><span class="hljs-variable">$currentMemoryUsage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">memory_get_usage</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aktuelle Speicherverwendung: "</span></span><span> . </span><span><span class="hljs-variable">$currentMemoryUsage</span></span><span> . </span><span><span class="hljs-string">" Byte\n"</span></span><span>;

</span><span><span class="hljs-comment">// Legen Sie ein anfängliches Speichergrenze fest</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'memory_limit'</span></span><span>, </span><span><span class="hljs-string">'128M'</span></span><span>);

</span><span><span class="hljs-comment">// Überprüfen Sie, ob es nahe am Speicherlimit liegt,Wenn Sie schließen, erhöhen Sie die Speichergrenze</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$currentMemoryUsage</span></span><span> &gt; </span><span><span class="hljs-number">100</span></span><span> * </span><span><span class="hljs-number">1024</span></span><span> * </span><span><span class="hljs-number">1024</span></span><span>) {  </span><span><span class="hljs-comment">// Wenn die aktuelle Speicherverwendung überschreitet 100MB</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'memory_limit'</span></span><span>, </span><span><span class="hljs-string">'256M'</span></span><span>);  </span><span><span class="hljs-comment">// Erhöhen Sie die Speichergrenze auf 256MB</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Die Speichergrenze wurde an eingestellt auf 256MB\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aktuelle Speicherverwendung合理,Sie müssen keine Speichergrenzen einstellen。\n"</span></span><span>;
}

</span><span><span class="hljs-comment">// Führen Sie Vorgänge aus, die viel Speicher erfordern</span></span><span>
</span><span><span class="hljs-variable">$array</span></span><span> = </span><span><span class="hljs-title function_ invoke__">range</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">1000000</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Betrieb abgeschlossen。\n"</span></span><span>;
</span></span>

Im obigen Beispiel überprüft das Skript zunächst die aktuelle Speicherverwendung. Wenn die Speicherverwendung nahe an einer voreingestellten Grenze liegt (z. B. 100 MB), verwenden Sie INI_SET (), um die Speichergrenze zu erhöhen. Diese Methode stellt sicher, dass das Skript den Übergang reibungslos verlagern kann, wenn der Speicher abgelaufen ist, wodurch das Programm aufgrund des Speicherüberlaufs vermieden wird.

4. Wann verwenden Sie memory_get_usage () und ini_set () ?

  1. Bei der Verarbeitung großer Datenmengen: Wenn Ihre Anwendung große Datenmengen verarbeiten muss, können die Speicheranforderungen dramatisch zunehmen. Zu diesem Zeitpunkt können Sie die Speicherverwendung über memory_get_usage () überwachen und Speichergrenzen entsprechend der Situation anpassen, um unzureichende Speicherfehler zu verhindern.

  2. Komplexe Computeraufgaben: Wenn Ihr Skript groß angelegte Computer (z. B. eine Bildverarbeitung in großem Maßstab, Big-Data-Analyse usw.) durchführen muss, ist auch der Speicherverbrauch höher. Eine angemessene Verwendung von Ini_Set () zum Anpassen der Speichergrenze kann sicherstellen, dass diese Berechnungsaufgaben reibungslos erledigt werden.

  3. Optimierte Leistung: Wenn Sie bereits wissen, dass Skripte in bestimmten Situationen viel Speicher verbrauchen, kann das Festlegen eines großen Speicherlimits am Anfang des Skripts mehrere Anpassungen vermeiden und den Overhead reduzieren.

5. Dinge zu beachten

  • Vermeiden Sie häufige Modifikation von Speichergrenzen: Obwohl Ini_Set () die Speichergrenzen dynamisch anpassen kann, kann die häufige Änderung der Speichergrenzwerte einen Einfluss auf die Leistung haben. Daher sollte diese Methode vernünftigerweise verwendet werden, um jedes Mal, wenn sie ausgeführt wird, Speicheranpassungen zu vermeiden.

  • Rational schätzen die Speicheranforderungen: Während der Entwicklungsphase sollte eine angemessene Schätzung der Speicherbedarfsanforderungen der Anwendung vorgenommen werden. Sie können das Skript über memory_get_usage () debuggen, um den Speicherverbrauch verschiedener Funktionsmodule anzuzeigen und dann zu Beginn des Skripts geeignete Speichergrenzwerte festzulegen.

  • Überwachung der Speicherverwendung: Wenn Sie PHP -Skripte in einer Produktionsumgebung ausführen, wird empfohlen, PHP -Fehlerprotokolle zu aktivieren und Speicherverbrauch zu überwachen. Wenn die Speicherverwendung nahe am Grenzwert liegt, kann der Speicher im Voraus optimiert oder erweitert werden.

abschließend

Durch Kombinieren von memory_get_usage () und ini_set () können Entwickler den Speicherverbrauch in Echtzeit überwachen, während PHP -Skripte ausgeführt werden und die Speichergrenzen bei Bedarf anpassen. Diese dynamische Anpassungsmethode kann effektiv vermeiden Speicherüberlauffehler und die Programmstabilität und Effizienz verbessern. In der Entwicklung ist rational konfiguriert die Beschränkungen für Speicherverbrauch eine der Schlüssel, um den effizienten Betrieb von PHP -Skripten sicherzustellen.