Inhaltsverzeichnis
Wie funktioniert MPF?
aliyun centos 6.9
Aliyun Centos 6.9, unser Unternehmen verwendet normalerweise diese Version.
Hier schlägt die Makefile-Generierung normalerweise fehl. Es gibt später Beispiele für eine fehlgeschlagene Generierung.
Denken Sie daran, die alte Konfiguration des Opcaches aufzuschreiben. ini ist JIT immer noch eine Optimierung von Opcache.
Hier sind einige Probleme mit ./configure failed
Lösung
Dies direkt zu tun wird nicht funktionieren, die Version im Yum-Warehouse ist zu niedrig.
Ähnlich funktioniert yum auch nicht, die Version ist zu niedrig.
Problem Vier
Heim Backend-Entwicklung PHP8 Spät aber angekommen! Die PHP8-Rezension finden Sie hier~

Spät aber angekommen! Die PHP8-Rezension finden Sie hier~

Sep 16, 2020 pm 04:51 PM
php8

PHP 8 Alpha 1 wurde am 25. Juni veröffentlicht und PHP 8 Alpha 2 wurde am 9. Juli veröffentlicht. Im Allgemeinen ist Alpha 2 eine einigermaßen brauchbare Version, also habe ich sie am Wochenende evaluiert.

Werfen wir zunächst einen Blick auf die Ergebnisse:

JIT ist nicht aktiviert

php -d opcache.jit_buffer_size=0 Zend/bench.php
simple             0.025simplecall         0.012simpleucall        0.012simpleudcall       0.012mandel             0.135mandel2            0.211ackermann(7)       0.082ary(50000)         0.012ary2(50000)        0.010ary3(2000)         0.186fibo(30)           0.283hash1(50000)       0.039hash2(500)         0.041heapsort(20000)    0.089matrix(20)         0.110nestedloop(12)     0.096sieve(30)          0.045strcat(200000)     0.019------------------------
Total              1.419
Nach dem Login kopieren

JIT ist aktiviert:

php -d -d opcache.jit_buffer_size=64M -d opcache.jit=1205 Zend/bench.php
simple             0.001simplecall         0.000simpleucall        0.000simpleudcall       0.000mandel             0.005mandel2            0.006ackermann(7)       0.010ary(50000)         0.005ary2(50000)        0.004ary3(2000)         0.011fibo(30)           0.027hash1(50000)       0.027hash2(500)         0.018heapsort(20000)    0.011matrix(20)         0.011nestedloop(12)     0.006sieve(30)          0.004strcat(200000)     0.009------------------------
Total              0.155
Nach dem Login kopieren

Und Opcache ist nicht aktiviert:

php Zend/bench.php
simple             0.051simplecall         0.017simpleucall        0.083simpleudcall       0.089mandel             0.506mandel2            0.409ackermann(7)       0.095ary(50000)         0.012ary2(50000)        0.010ary3(2000)         0.187fibo(30)           0.367hash1(50000)       0.040hash2(500)         0.041heapsort(20000)    0.097matrix(20)         0.122nestedloop(12)     0.093sieve(30)          0.063strcat(200000)     0.018------------------------
Total              2.299
Nach dem Login kopieren

Opcache ist nicht aktiviert: 2,299s Wenn Opcache aktiviert ist, JIT jedoch nicht: 1,419 s Wenn Opcache aktiviert ist und JIT aktiviert ist: 0,155 s

Mit aktiviertem JIT ist es fast das 9,15-fache des Werts ohne aktiviertes JIT. Nach mehreren Tests liegt dieser Wert stabil zwischen dem 8-fachen und dem 10-fachen.

Wie funktioniert MPF?

Um nah an unserem Geschäft zu sein, haben wir unter der MPF-Framework-Umgebung

aliyun centos 6.9

php7.test.com php-fpm einen Prozess getestet php8.test.com php-fpm ein Prozess

Mpf zwei Schnittstellen

/v1/hello/wzh/index1

public function index1() {    $this->output('123');
}
Nach dem Login kopieren

/v1/hello/wzh/index2

public function index2() {
    $a = 0;    for ($i = 0; $i < 1000000; $i++)
        $a++;    $this->output($a);
}
Nach dem Login kopieren

Lassen Sie uns einen Stresstest durchführen

php7 mit weniger Berechnung

wrk -c36 -d 5s -t12 https://php7.test.com/v1/hello/wzh/index1
Running 5s test @ https://php7.test.com/v1/hello/wzh/index1
  12 threads and 36 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   432.97ms   76.00ms 527.38ms   92.17%
    Req/Sec     8.38      5.36    20.00     63.85%
  396 requests in 5.09s, 121.43KB readRequests/sec:     77.78
Transfer/sec:     23.85KB
Nach dem Login kopieren

php7 Mehr Berechnungen

wrk -c36 -d 5s -t12 https://php7.test.com/v1/hello/wzh/index2
Running 5s test @ https://php7.test.com/v1/hello/wzh/index2
  12 threads and 36 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.02s   569.99ms   1.96s    57.14%
    Req/Sec     3.18      3.43    10.00     80.88%
  70 requests in 5.03s, 21.60KB read
  Socket errors: connect 0, read 0, write 0, timeout 42
Requests/sec:     13.91
Transfer/sec:      4.29KB
Nach dem Login kopieren

php8 JIT schaltet weniger Berechnungen ein

wrk -c36 -d 5s -t12 https://php8.test.com/v1/hello/wzh/index1
Running 5s test @ https://php8.test.com/v1/hello/wzh/index1
  12 threads and 36 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    34.48ms    4.34ms  95.45ms   87.87%
    Req/Sec    84.61     13.36   121.00     85.28%
  5083 requests in 5.03s, 1.67MB readRequests/sec:   1010.55
Transfer/sec:    340.43KB
Nach dem Login kopieren

php8 JIT schaltet mehr Berechnungen ein

wrk -c36 -d 5s -t12 https://php8.test.com/v1/hello/wzh/index2
Running 5s test @ https://php8.test.com/v1/hello/wzh/index2
  12 threads and 36 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    97.84ms    4.97ms 159.50ms   92.12%
    Req/Sec    30.27      4.42    50.00     86.50%
  1814 requests in 5.07s, 614.71KB readRequests/sec:    357.76
Transfer/sec:    121.23KB
Nach dem Login kopieren

php8 JIT schaltet weniger Berechnungen aus

wrk -c36 -d 5s -t12 https://php8.test.com/v1/hello/wzh/index1
Running 5s test @ https://php8.test.com/v1/hello/wzh/index1
  12 threads and 36 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    38.10ms    6.47ms 239.60ms   94.01%
    Req/Sec    77.50     12.76   110.00     89.63%
  4622 requests in 5.04s, 1.52MB readRequests/sec:    916.22
Transfer/sec:    308.65KB
Nach dem Login kopieren

[Bild:BA1A37D. 8 -760E -4637-901B-3E3521F969E7-4107-0000191504DD1B2E/86D37899-3B46-4BDA-B396-E5C8DD51068E.png]

Spät aber angekommen! Die PHP8-Rezension finden Sie hier~ Es wurde festgestellt, dass PHP weniger berechnet ist ist das
-fache der Leistung von PHP7.
Aber es gibt ein Problem, das ich für erstaunlich halte, wenn es um JIT-freie Berechnungen geht. Ich dachte, es sei ein Problem mit der Testrichtung, aber nach vielen Demonstrationen sind diese Daten korrekt Ich möchte hier suchen, wenn ich Zeit habe. Was sind die Optimierungspunkte?

13倍,而且计算越多优化越明显,计算多情况下php8JIT是php7性能的25.7Kompilierungsprozess

Beschwerde: Die manuelle Kompilierung von PHP dauerte 2 Stunden und ich bin auf N Fallstricke gestoßen. Damit jeder mehr Anforderungen schreiben kann, werde ich die Fallstricke teilen

Aliyun Centos 6.9, unser Unternehmen verwendet normalerweise diese Version.

php-Quellcode-Kompilierung

wrk -c36 -d 5s -t12 https://php8.test.com/v1/hello/wzh/index2
Running 5s test @ https://php8.test.com/v1/hello/wzh/index2
  12 threads and 36 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   766.16ms  181.30ms 887.08ms   88.37%
    Req/Sec     6.25      5.36    20.00     91.36%
  215 requests in 5.09s, 72.86KB readRequests/sec:     42.22
Transfer/sec:     14.31KB
Nach dem Login kopieren

Hier schlägt die Makefile-Generierung normalerweise fehl. Es gibt später Beispiele für eine fehlgeschlagene Generierung.

wget https://downloads.php.net/~carusogabriel/php-8.0.0alpha2.tar.gz

tar -zxf php-8.0.0alpha2.tar.gzcd php-8.0.0alpha2

./configure --prefix=/yourdir/php8 --with-config-file-path=/yourdir/php8/etc --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --enable-static --enable-sockets --with-zip --enable-calendar --enable-bcmath --enable-mbstring --with-zlib --with-iconv=/usr/local/libiconv --enable-gd --enable-mbstring --with-freetype --with-mysql-sock=/tmp/mysql.sock --disable-ipv6 --enable-debug --with-openssl --enable-opcache复制代码
Nach dem Login kopieren

configure php.ini

Denken Sie daran, die alte Konfiguration des Opcaches aufzuschreiben. ini ist JIT immer noch eine Optimierung von Opcache.

make -j 8

make install

cp php.ini-production /yourdir/php8/etc/php.ini
Nach dem Login kopieren

Fehlerlösung konfigurieren

Hier sind einige Probleme mit ./configure failed

Problem 1

zend_extension=opcache.so
opcache.enable=1

; 命令行测试的话这里一定要打开
opcache.enable_cli=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=300
opcache.fast_shutdown=1
opcache.enable_file_override = 1
opcache.blacklist_filename = /etc/php.d/opcache.blacklist

; 这里就是新的jit的配置
opcache.jit=1205
opcache.jit_buffer_size=64M
Nach dem Login kopieren

Lösung

No package 'sqlite3' found
Nach dem Login kopieren

Hinweis

Dies direkt zu tun wird nicht funktionieren, die Version im Yum-Warehouse ist zu niedrig.
wget https://www.sqlite.org/2020/sqlite-autoconf-3320300.tar.gz

tar -zxf sqlite-autoconf-3320300.tar.gzcd sqlite-autoconf-3320300

./configure --prefix=/usr/local/lib/sqlite-3.32.0

make CFLAGS="-g -O2 -DSQLITE_ENABLE_COLUMN_METADATA"make installexport PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/sqlite-3.32.0/lib/pkgconfig"复制代码
Nach dem Login kopieren

Problem 2

yum install sqlite-devel
Nach dem Login kopieren

Lösung

configure: error: Please reinstall the iconv library.
Nach dem Login kopieren

Problem 3

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

tar -zxf libiconv-1.14.tar.gzcd libiconv-1.14

./configure 

make 

make install
Nach dem Login kopieren

Ähnlich funktioniert yum auch nicht, die Version ist zu niedrig.

No package 'oniguruma' found
Nach dem Login kopieren

Lösung

yum install oniguruma-devel
Nach dem Login kopieren

Problem Vier

wget https://github.com/kkos/oniguruma/archive/v6.9.5_rev1.tar.gz

tar -zxf v6.9.5_rev1.tar.gzcd oniguruma-6.9.5_rev1/ 

autoreconf -vfi

./configure --prefix=/usr/local/lib/oniguruma-6.9.5

make 

make installexport PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/oniguruma-6.9.5/lib/pkgconfig"
Nach dem Login kopieren

Lösung

No package 'libzip' found
Nach dem Login kopieren

Viel Spaß mit PHP 8 & JIT!

Das obige ist der detaillierte Inhalt vonSpät aber angekommen! Die PHP8-Rezension finden Sie hier~. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist der Unterschied zwischen PHP5 und PHP8? Was ist der Unterschied zwischen PHP5 und PHP8? Sep 25, 2023 pm 01:34 PM

Die Unterschiede zwischen PHP5 und PHP8 bestehen in Bezug auf Leistung, Sprachstruktur, Typsystem, Fehlerbehandlung, asynchrone Programmierung, Standardbibliotheksfunktionen und Sicherheit. Detaillierte Einführung: 1. Leistungsverbesserung: PHP8 führt einen JIT-Compiler ein, der einige hochfrequente Ausführungscodes kompilieren und optimieren kann, wodurch die Ausführungsgeschwindigkeit verbessert wird. PHP8 führt einige neue Sprachstrukturen und Funktionen ein. PHP8 unterstützt benannte Parameter, sodass Entwickler Parameternamen anstelle der Parameterreihenfolge usw. übergeben können.

So fügen Sie PHP8 eine MySQL-Erweiterung hinzu So fügen Sie PHP8 eine MySQL-Erweiterung hinzu Oct 07, 2023 pm 03:31 PM

Die Schritte zum Hinzufügen der MySQL-Erweiterung zu PHP8 sind: 1. Installieren Sie die MySQL-Client-Bibliothek. 3. Laden Sie den MySQL-Erweiterungsquellcode herunter. 5. Aktivieren Sie die MySQL-Erweiterung MySQL-Erweiterung; 6. Starten Sie einfach einen Webserver neu.

Detaillierte grafische Erläuterung der Installations- und Konfigurationsmethode von Apache2.4+php8.0 Detaillierte grafische Erläuterung der Installations- und Konfigurationsmethode von Apache2.4+php8.0 Dec 06, 2022 pm 04:53 PM

In diesem Artikel erfahren Sie, wie Sie Apache2.4 installieren und PHP8.0 konfigurieren. Der Artikel enthält Bilder und detaillierte Schritte zur Installation und Konfiguration von Apache2.4+php8.0~

So stellen Sie eine Verbindung zur Datenbank in PHP8 her So stellen Sie eine Verbindung zur Datenbank in PHP8 her Nov 16, 2023 pm 02:41 PM

PHP8 kann MySQLi und PDO verwenden, um eine Verbindung zur Datenbank herzustellen. Detaillierte Einführung: 1. Verwenden Sie MySQL, um eine Verbindung zur Datenbank herzustellen, indem Sie den Datenbankservernamen, den Benutzernamen, das Kennwort und den Datenbanknamen für die Verbindung übergeben. Verwenden Sie dann das Attribut „connect_error“, um zu prüfen, ob die Verbindung erfolgreich ist, und geben Sie eine Fehlermeldung aus, wenn die Verbindung fehlschlägt. Schließen Sie abschließend die Verbindung, indem Sie die Methode „close()“ aufrufen. 2. Verwenden Sie PDO, um eine Verbindung zur Datenbank herzustellen, und stellen Sie eine Verbindung her, indem Sie den Namen des Datenbankservers, das Kennwort und den Datenbanknamen usw. übergeben.

So konvertieren Sie PHP8-Datentypen So konvertieren Sie PHP8-Datentypen Nov 16, 2023 pm 02:51 PM

Zu den Methoden des PHP8-Datentyps gehören die Konvertierung von Zeichenfolgen in Ganzzahlen, die Konvertierung von Ganzzahlen in Zeichenfolgen, die Konvertierung von Zeichenfolgen in Gleitkommazahlen, die Konvertierung von Gleitkommazahlen in Zeichenfolgen, die Konvertierung von Arrays in Zeichenfolgen, die Konvertierung von Zeichenfolgen in Arrays, die Konvertierung von Booleschen Werten in Ganzzahlen und die Konvertierung von Ganzzahlen in Bestimmung und Konvertierung boolescher Werte und Variablentypen. Ausführliche Einführung: 1. Die Konvertierung einer Zeichenfolge in eine Ganzzahl umfasst die Funktion intval() und die erzwungene Typkonvertierung (int). 2. Die Konvertierung einer Ganzzahl in eine Zeichenfolge umfasst die Funktion strval() und die erzwungene Typkonvertierung (String). eine Zeichenfolge zu einem Gleitkommapunkt und so weiter.

Ein detaillierter Blick auf JIT in PHP 8 Ein detaillierter Blick auf JIT in PHP 8 Apr 25, 2022 pm 08:46 PM

Dieser Artikel führt Sie durch die JIT in PHP 8 und spricht darüber, wie JIT am Interpretationsprozess teilnimmt. Ich hoffe, dass er für alle hilfreich ist!

Welche Leistungsverbesserungen bietet PHP8? Welche Leistungsverbesserungen bietet PHP8? Dec 21, 2023 pm 02:44 PM

Die verbesserte Leistung von PHP8 umfasst: 1. Einführung des JIT-Compilers; 3. Verbesserung des Garbage-Collection-Mechanismus; 6. Optimierung der String-Verarbeitung; . Verbessern Sie die Array-Verarbeitung. 8. Führen Sie einen neuen Speicherverwaltungsmechanismus ein. 9. Optimieren Sie die Codegenerierung. Detaillierte Einführung: 1. Die Einführung des JIT-Compilers PHP8 stellt den JIT-Compiler vor, eine dynamische Kompilierungstechnologie, die PHP-Code für eine effizientere Ausführung konvertieren kann.

Welche Funktionen hat PHP8? Welche Funktionen hat PHP8? Dec 21, 2023 pm 02:54 PM

Funktionen von PHP8: 1. Benannte Parameter; 4. Konstruktorattributverbesserung 8. Verbessertes Typsystem; 10. Konsistenzverbesserungen. Detaillierte Einführung: 1. Der JIT-Compiler PHP8 führt die Just-in-Time-Kompilierungstechnologie ein, die PHP-Code in nativen Maschinencode kompiliert und dadurch die Ausführungsgeschwindigkeit des Programms verbessert. 2. Benannte Parameter: PHP8 unterstützt benannte Parameter und ermöglicht die Verwendung von Parameternamen beim Aufruf von Funktionen usw.

See all articles