Rumah pembangunan bahagian belakang PHP8 PHP 8.0 源码编译安装以及 JIT 尝鲜

PHP 8.0 源码编译安装以及 JIT 尝鲜

Jul 10, 2020 pm 02:56 PM
jit php8

奇技指南

PHP 8.0 Alpha 1 已经在2020年6月25号发布了,今天给大家分享一篇最简化的 PHP 8 源码编译安装方法,快速尝鲜 PHP 8.0 的新特性 JIT。 

  • 操作系统:CentOS Linux release 7.4.1708 (Core) 

  • GCC:4.8.5 20150623 (Red Hat 4.8.5-28) 

  • PHP 版本:php-8.0.0alpha1

1、下载页面

https://downloads.php.net/~pollita/
Salin selepas log masuk

2、下载 PHP 8.0

wget https://downloads.php.net/~pollita/php-8.0.0alpha1.tar.gz
Salin selepas log masuk

3、解压

tar -zxvf php-8.0.0alpha1.tar.gz
Salin selepas log masuk

4、新建安装目录

由于本机有多个 PHP 版本并存,需要新建一个富有意义的目录,一个不假思索就能知晓 PHP 版本的目录名称。

 mkdir -p /usr/local/php80
Salin selepas log masuk

5、configure options

这是一个精简版配置选项,更加丰富的 PHP 配置选项说明:https://www.php.net/manual/en/configure.about.php

 cd php-8.0.0alpha1 
 ./configure --prefix=/usr/local/php80/ --enable-debug --enable-fpm  --with-config-file-path=/usr/local/php80/etc/ --with-config-file-scandir=/usr/local/php80/etc/php.d/
Salin selepas log masuk

若在 configure 过程中,遇到提示 configure: error,留意看下方的错误详细信息。以下 列出了在配置过程中出现的错误情况之关键信息摘要,未列举到的其它错误情况,解决方 法如出一辙:

Error #1:

configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met: 
No package 'libxml-2.0' found
Salin selepas log masuk

解决方法:

yum install libxml2-devel.x86_64
Salin selepas log masuk

Error #2:

configure: error: Package requirements (sqlite3 > 3.7.4) were not met: 
No package 'sqlite3' found
Salin selepas log masuk

解决方法:

yum install sqlite-devel.x86_64
Salin selepas log masuk

如果看到以下提示信息,说明 configure 这步已经成功啦。

PHP 8.0 源码编译安装以及 JIT 尝鲜

6、编译&安装

 make
Salin selepas log masuk

make 阶段消耗的时间与机器配置有关哟,若看到以下信息,说明 make 阶段已经完成 了。

Build complete. 
Don't forget to run 'make test'.
Salin selepas log masuk

make test 由于是尝鲜,这步先省略了。

 make install
  exit 0;  -v -d /home/fanjiapeng/php-8.0.0alpha1/Zend/zend_ini_parser.y -o
  /home/fanjiapeng/php-8.0.0alpha1/Zend/zend_ini_parser.c
  Installing shared extensions:     
  /usr/local/php80/lib/php/extensions/debugnon-zts-20190128/ 
  Installing PHP CLI binary:        /usr/local/php80/bin/ 
  Installing PHP CLI man page:      /usr/local/php80/php/man/man1/ 
  Installing PHP FPM binary:        /usr/local/php80/sbin/ 
  Installing PHP FPM defconfig:     /usr/local/php80/etc/ 
  Installing PHP FPM man page:      /usr/local/php80/php/man/man8/ 
  Installing PHP FPM status page:   /usr/local/php80/php/php/fpm/ 
  Installing phpdbg binary:         /usr/local/php80/bin/ 
  Installing phpdbg man page:       /usr/local/php80/php/man/man1/ 
  Installing PHP CGI binary:        /usr/local/php80/bin/ 
  Installing PHP CGI man page:      /usr/local/php80/php/man/man1/ 
  Installing build environment:     /usr/local/php80/lib/php/build/ 
  Installing header files:          /usr/local/php80/include/php/ 
  Installing helper programs:       /usr/local/php80/bin/   
  program: phpize   
  program: php-config 
  Installing man pages:             /usr/local/php80/php/man/man1/   
  page: phpize.1   
  page: php-config.1 
  /home/fanjiapeng/php-8.0.0alpha1/build/shtool install -c ext/phar/phar.phar /usr/local/php80/bin/phar.phar 
  ln -s -f phar.phar /usr/local/php80/bin/phar 
  Installing PDO headers:           /usr/local/php80/include/php/ext/pdo/
Salin selepas log masuk

7、验证 PHP

/usr/local/php80/bin/php -v 
 PHP 8.0.0alpha1 (cli) (built: Jul  2 2020 15:47:26) ( NTS DEBUG ) 
Copyright (c) The PHP Group
 Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
Salin selepas log masuk

8、环境配置

ln -s /usr/local/php80/bin/php /usr/bin/php80 
cp php.ini-development /usr/local/php80/etc/php.ini
cp /usr/local/php80/etc/php-fpm.conf.default /usr/local/php80/etc/phpfpm.conf
cp /usr/local/php80/etc/php-fpm.d/www.conf.default /usr/local/php80/etc/php-fpm.d/www.conf 
cp sapi/fpm/init.d.php-fpm /etc/init.d/php80-fp
chmod +x /etc/init.d/php80-fpm
Salin selepas log masuk

9、验证配置路径

验证自定义的配置项是否生效:--with-config-file-path,--with-config-file-scan-dir

php80 --ini 
Configuration File (php.ini) Path: /usr/local/php80/etc/ 
Loaded Configuration File:         /usr/local/php80/etc/php.ini 
Scan for additional .ini files in: /usr/local/php80/etc/php.d/ 
Additional .ini files parsed:      (none)
Salin selepas log masuk

10、启动 FPM

/etc/init.d/php80-fpm 
start Starting php-fpm  done
Salin selepas log masuk

11、验证 FPM

ps aux | grep php-fpm 
root     26876  0.0  0.0  52084  2828 ?        Ss   Jul02   0:14 php-fpm: 
master process (/usr/local/php80/etc/php-fpm.conf) 
nobody   26877  0.0  0.0  52084  3648 ?        S    Jul02   0:00 php-fpm: 
pool www 
nobody   26878  0.0  0.0  52084  3624 ?        S    Jul02   0:00 php-fpm: pool www 
/etc/init.d/php80-fpm -h 
Usage: /etc/init.d/php80-fpm {start|stop|forcequit|restart|reload|status|configtest} 
/etc/init.d/php80-fpm status 
php-fpm (pid 26876) is running... 
/etc/init.d/php80-fpm configtest 
[06-Jul-2020 11:06:42] NOTICE: configuration file /usr/local/php80/etc/php
fpm.conf test is successful
Salin selepas log masuk

这里省略掉了 Nginx 配置详情,主要是为了快速测试安装的 PHP-FPM 模式是可用的。

// index.php 
<?php 
var_dump(PHP_VERSION); 
var_dump(PHP_VERSION_ID);
Salin selepas log masuk
curl localhost 
string(11) "8.0.0alpha1" 
int(80000)
Salin selepas log masuk

12、尝鲜新特性 JIT

机器配置:8核16G,SATA盘,操作系统:CentOS Linux release 7.4.1708 (Core)

Zend OPCache(/usr/local/php80/etc/php.ini)配置如下,[opcache] 配置项大部分都 有默认值,为了突显这些配置项的重要性还是列举了出来:

; 加载 Zend OPCache 扩展 
zend_extension=opcache 
; 启用 Zend OPCache 
opcache.enable=1 
; 启用 Zend OPCache,在 CLI 模式下 
opcache.enable_cli=1
 ; OPCache 共享内存存储大小,默认值 128 
 opcache.memory_consumption=128 
 ; interned string 内存大小,默认值 8 
 opcache.interned_strings_buffer=8 
 ; 缓存脚本文件数量的上限,默认值 10000 
 opcache.max_accelerated_files=10000 
; 10秒检查一次文件的更新,默认值 2s 
opcache.revalidate_freq=10 
; 删除所有 PHPDoc 注释,默认值 1,表示保留注释 
opcache.save_comments=0
Salin selepas log masuk

这是一台资源空闲的虚拟机,重复多次开启 JIT、关闭 JIT 测试结果观察,结果值几乎无什 么变化。测试结果也没有特意去挑选其中一次最漂亮的数据,实际上也没这个必要。如下 图所示:

PHP 8.0 源码编译安装以及 JIT 尝鲜

13、总结

这是一个通用性 PHP 源码编译安装方法,其它 PHP 版本编译安装方式类似,实际业务运 用中 configure options 要丰富的多,需要安装的类库也会更加全面。这篇文章中,测试 了 PHP 8 的新特性 JIT,依据 Zend/bench.php 测试结果看,还是让大家眼前一亮的。关 于 PHP 8 JIT 介绍,推荐《PHP8新特性JIT使用简介》。

推荐文章:《PHP8.0

Atas ialah kandungan terperinci PHP 8.0 源码编译安装以及 JIT 尝鲜. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara php5 dan php8 Apakah perbezaan antara php5 dan php8 Sep 25, 2023 pm 01:34 PM

Perbezaan antara php5 dan php8 adalah dari segi prestasi, struktur bahasa, sistem jenis, pengendalian ralat, pengaturcaraan tak segerak, fungsi perpustakaan standard dan keselamatan. Pengenalan terperinci: 1. Peningkatan prestasi Berbanding dengan PHP5, PHP8 mempunyai peningkatan besar dalam prestasi PHP8 memperkenalkan pengkompil JIT, yang boleh menyusun dan mengoptimumkan beberapa kod pelaksanaan frekuensi tinggi, dengan itu meningkatkan kelajuan berjalan; PHP8 memperkenalkan beberapa struktur dan fungsi bahasa baharu PHP8 menyokong parameter yang dinamakan, membenarkan pembangun menghantar nama parameter dan bukannya susunan parameter, dsb.

Bagaimana untuk menambah sambungan mysql ke php8 Bagaimana untuk menambah sambungan mysql ke php8 Oct 07, 2023 pm 03:31 PM

Langkah-langkah untuk menambah sambungan mysql ke php8 ialah: 1. Pasang pustaka klien MySQL 2. Pasang alat pembangunan untuk PHP 8 3. Muat turun kod sumber sambungan MySQL 5. Dayakan Sambungan MySQL; 6. Mulakan Semula Hanya pelayan web.

Penjelasan grafik terperinci tentang kaedah pemasangan dan konfigurasi apache2.4+php8.0 Penjelasan grafik terperinci tentang kaedah pemasangan dan konfigurasi apache2.4+php8.0 Dec 06, 2022 pm 04:53 PM

Artikel ini akan memperkenalkan kepada anda cara memasang apache2.4 dan cara mengkonfigurasi php8.0 Artikel disertakan dengan gambar dan langkah terperinci Mari kita lihat cara memasang dan mengkonfigurasi apache2.4+php8.0~

Bagaimana untuk menyambung ke pangkalan data dalam php8 Bagaimana untuk menyambung ke pangkalan data dalam php8 Nov 16, 2023 pm 02:41 PM

PHP8 boleh menggunakan mysqli dan PDO untuk menyambung ke pangkalan data. Pengenalan terperinci: 1. Gunakan mysqli untuk menyambung ke pangkalan data dengan memasukkan nama pelayan pangkalan data, nama pengguna, kata laluan dan nama pangkalan data untuk disambungkan. Kemudian, gunakan atribut `connect_error` untuk menyemak sama ada sambungan berjaya dan mengeluarkan mesej ralat jika sambungan gagal. Akhir sekali, tutup sambungan dengan memanggil kaedah `close()` 2. Gunakan PDO untuk menyambung ke pangkalan data, dan sambung dengan memasukkan nama pelayan pangkalan data, kata laluan dan nama pangkalan data, dsb.

Bagaimana untuk menukar jenis data php8 Bagaimana untuk menukar jenis data php8 Nov 16, 2023 pm 02:51 PM

Kaedah jenis data php8 termasuk menukar rentetan kepada integer, menukar integer kepada rentetan, menukar rentetan kepada nombor titik terapung, menukar nombor titik terapung kepada rentetan, menukar tatasusunan kepada rentetan, menukar rentetan kepada tatasusunan, menukar nilai Boolean kepada integer, penukaran integer kepada Nilai boolean dan penentuan jenis pembolehubah dan penukaran. Pengenalan terperinci: 1. Menukar rentetan kepada integer termasuk fungsi intval() dan (int) penukaran jenis paksa 2. Menukar integer kepada rentetan termasuk fungsi strval() dan (rentetan) penukaran jenis paksa; rentetan kepada apungan Mata dan sebagainya.

Pandangan mendalam tentang JIT dalam PHP 8 Pandangan mendalam tentang JIT dalam PHP 8 Apr 25, 2022 pm 08:46 PM

Artikel ini akan membawa anda melalui JIT dalam PHP 8 dan bercakap tentang cara JIT mengambil bahagian dalam proses tafsiran saya harap ia akan membantu semua orang.

Apakah peningkatan prestasi yang ada pada php8? Apakah peningkatan prestasi yang ada pada php8? Dec 21, 2023 pm 02:44 PM

Peningkatan prestasi php8 termasuk: 1. Pengenalan pengkompil JIT; 2. Pengoptimuman panggilan fungsi; . Memperbaik pemprosesan tatasusunan; 8. Memperkenalkan mekanisme pengurusan memori baharu; Pengenalan terperinci: 1. Pengenalan pengkompil JIT PHP8 memperkenalkan pengkompil JIT, yang merupakan teknologi kompilasi dinamik yang boleh menukar kod PHP kepada kod mesin untuk pelaksanaan yang lebih cekap, dsb.

Tingkatkan kelajuan pelaksanaan kod: pelajari teknologi JIT PHP8 Tingkatkan kelajuan pelaksanaan kod: pelajari teknologi JIT PHP8 Jan 26, 2024 am 10:06 AM

Buka kunci teknologi JIT PHP8: Optimumkan kelajuan pelaksanaan kod anda Dengan keluaran PHP8 pada penghujung tahun 2020, salah satu ciri baharu yang paling menarik ialah pengenalan teknologi pengkompil JIT (Just-in-Time). Teknologi JIT boleh meningkatkan kelajuan pelaksanaan kod PHP dengan ketara, terutamanya serpihan kod dengan pengiraan dan gelung yang intensif. Dalam artikel ini, kami akan meneroka cara menggunakan teknologi JIT PHP8 untuk mengoptimumkan kelajuan pelaksanaan kod, sambil menyediakan beberapa contoh kod khusus. 1. Apakah pengkompil JIT? J

See all articles