Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie hidef anstelle von define in PHP, um die Effizienz zu optimieren

Verwenden Sie hidef anstelle von define in PHP, um die Effizienz zu optimieren

*文
*文Original
2017-12-26 13:40:191973Durchsuche

Wie verwende ich hidef anstelle von define in PHP, um die Effizienz zu optimieren? In diesem Artikel wird hauptsächlich die Verwendung der Hidef-Erweiterung anstelle von Definieren in PHP vorgestellt, um die Leistung zu verbessern. Dieser Artikel konzentriert sich auf das Testen der Leistung von Hidef und bietet Beispiele. Ich hoffe, es hilft allen.


Die Website musste eine neue Konstante hinzufügen, also öffnete ich die lokale Datei config.php und dachte an die vor einigen Jahren getesteten Hidef- und APC-Lösungen, um die Definitionsleistung zu verbessern .

Mein Programm hat unterschiedliche Konfigurationen für Entwicklungs-, Test- und Produktionsserver. In Bezug auf Konstanten verwende ich ein Array, um alle Konstanten zu definieren, die definiert werden müssen, und überprüfe dann, ob es eine apc_load_constants-Funktion gibt. Wenn nicht, Batch-Definition durchführen. Wenn Sie apc verwenden, müssen Sie jedes Mal, wenn Sie eine Konstante hinzufügen, $key ändern, damit es wirksam wird.


Nachdem die Test- und Produktionsserver-PHP auf 5.4 aktualisiert wurden, verwendet der Opcode-Cache Zend Opcache und APC ist nicht mehr installiert. Da der APC-Benutzercache verwendet wird, habe ich zusätzlich Apcu installiert und die Verwendung ist genau die gleiche wie bei APC, sodass das Programm überhaupt nicht geändert werden muss. Allerdings unterstützt apc_load_constants und apc_define_constants nicht, sodass die apc-Lösung nicht verwendet werden kann. Ich bin auf die offizielle Website gegangen und habe die neueste Version von hidef 0.1.13 installiert, stabile Version, veröffentlicht am 12. Juli 2012, also vor mehr als einem Jahr.


Ich habe ein einfaches Programm geschrieben, um die Definitionszeit zu testen. Es dauert etwa 2,8 ms, um es 1000 Mal auszuführen. Wenn also für eine mittelgroße Website (z. B. PHP wird 10 Millionen Mal am Tag ausgeführt) 25 Konstanten pro Seite definiert werden, dauert dies etwa 10000000*25/1000*2,8=700000 ms pro Tag, was 700 Sekunden entspricht. Durch die Verwendung von hidef können fast 700 Sekunden PHP-Laufzeit pro Tag eingespart werden.

Werfen wir einen Blick auf die Leseleistung? Der Test liest konstant 1 W, und die Werte sind alle 1, also 37 ms bzw. 0,7 ms. Wenn also 10 Millionen Mal am Tag durchschnittlich 20 Konstanten pro Seite verwendet werden, dauert dies 740 Sekunden, und die Verwendung von hidef dauert 14 Sekunden, also noch mehr als 700 Sekunden.

Die Einsparung von 1400 Sekunden PHP-Laufzeit pro Tag ist zwar unbedeutend, aber es ist immer gut und einen Versuch wert. Schließlich ist die Wahrscheinlichkeit, dass sich Definitionsparameter ändern, sehr gering.

Wenn die definierten Parameter geändert werden müssen, ändern Sie einfach die Konfigurationsdatei und laden Sie dann php-fpm neu.

Angehängt ist der Programmbeispielcode für die ursprünglichen Konfigurationskonstanten:

if (function_exists('apc_load_constants')) {
            function define_array($key, $arr, $case_sensitive = false) {
                if (!apc_load_constants($key, $case_sensitive)) {
                    apc_define_constants($key, $arr, $case_sensitive);
                }
            }
        } else {
            function define_array($key, $arr, $case_sensitive = false) {
                foreach ($arr as $name => $value) {
                    define($name, $value, $case_sensitive);
                }
            }
        }
        $constants = array(
            'HX'   => 1,
            'BLOG_URL'   => 'http://www.jb51.net/',
            'WWW_URL'   => 'http://www.jb51.net/',
        );
        define_array('hx_defined',$constants);



Angehängt ist der Code für Testen der definierten Geschwindigkeit.

<?php
$t1 = microtime(1);
    $constants = array(
        &#39;hx1&#39;       => 1,
        &#39;hx2&#39;       => &#39;2&#39;,
        &#39;hx3&#39;       => &#39;3&#39;,
        &#39;hx4&#39;       => &#39;4&#39;,
        &#39;hx5&#39;       => &#39;5&#39;,
        &#39;hx6&#39;       => &#39;6&#39;,
        &#39;hx7&#39;       => &#39;7&#39;,
        &#39;hx8&#39;       => &#39;8&#39;,
        &#39;hx9&#39;       => &#39;9&#39;,
        &#39;hx10&#39;       => &#39;10&#39;,
    );
    function define_array($key, $arr) {
        foreach ($arr as $name => $value) {
            define($name.$i, $value);
        }
    }
    
    for($i=0;$i<100;$i++) {
        define_array($i,$constants);
    }
    
    
$t2 = microtime(1);
echo ($t2-$t1)*1000;
//读性能
$t1 = microtime(1);
for($i=0;$i<10000;$i++) {
    $t = hx1;
}    
$t2 = microtime(1);
echo &#39; &#39;.($t2-$t1)*1000;
$t1 = microtime(1);
for($i=0;$i<10000;$i++) {
    $t = HX;
}    
$t2 = microtime(1);
echo &#39; &#39;.($t2-$t1)*1000;

Verwandte Empfehlungen:

PHP-Konstantendefinitionsprobleme

Eine Zusammenfassung der Konzepte von PHP-Konstanten

Detaillierte Einführung in die Verwendung von PHP-Konstanten und -Variablen

Das obige ist der detaillierte Inhalt vonVerwenden Sie hidef anstelle von define in PHP, um die Effizienz zu optimieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn