首頁 後端開發 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/
登入後複製

2、下載PHP 8.0

wget https://downloads.php.net/~pollita/php-8.0.0alpha1.tar.gz
登入後複製

3、解壓縮

tar -zxvf php-8.0.0alpha1.tar.gz
登入後複製

4、新安裝目錄

#由於本機有多個PHP 版本並存,需要新建一個富有意義的目錄,一個不假思索就能知曉PHP 版本的目錄名稱。

 mkdir -p /usr/local/php80
登入後複製

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/
登入後複製

若在configure 過程中,遇到提示configure: error,留意看下方的錯誤詳細資料。以下列出了在配置過程中出現的錯誤情況之關鍵資訊摘要,未列舉到的其它錯誤情況,解決方法如出一轍:

Error #1:

configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met: 
No package 'libxml-2.0' found
登入後複製

解決方法:

yum install libxml2-devel.x86_64
登入後複製

Error #2:

configure: error: Package requirements (sqlite3 > 3.7.4) were not met: 
No package 'sqlite3' found
登入後複製

解決方法:

yum install sqlite-devel.x86_64
登入後複製

如果看到以下提示訊息,說明configure 這一步驟已經成功啦。

PHP 8.0 原始碼編譯安裝以及 JIT 嚐鮮

6、編譯&安裝

 make
登入後複製

make 階段消耗的時間與機器配置有關喲,若看到以下信息,說明make 階段已經完成了。


Build complete. 
Don't forget to run 'make test'.
登入後複製

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/
登入後複製

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
登入後複製

#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
登入後複製

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)
登入後複製

10、啟動FPM

/etc/init.d/php80-fpm 
start Starting php-fpm  done
登入後複製

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
登入後複製

這裡省略掉了Nginx 配置詳情,主要是為了快速測試安裝的PHP-FPM 模式是可用的。

// index.php 
<?php 
var_dump(PHP_VERSION); 
var_dump(PHP_VERSION_ID);
登入後複製
curl localhost 
string(11) "8.0.0alpha1" 
int(80000)
登入後複製

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
登入後複製

這是一台資源空閒的虛擬機,重複多次開啟JIT、關閉JIT 測試結果觀察,結果值幾乎沒有變化。測試結果也沒有刻意去挑選其中一次最漂亮的數據,實際上也沒這個必要。如下圖所示:

PHP 8.0 原始碼編譯安裝以及 JIT 嚐鮮

13、總結

這是一個通用性PHP 原始碼編譯安裝方法,其它PHP 版本編譯安裝方式類似,實際業務運用中configure options 要豐富的多,需要安裝的類別庫也會更加全面。這篇文章中,測試 了 PHP 8 的新特性 JIT,依據 Zend/bench.php 測試結果看,還是讓大家眼前一亮的。關 於 PHP 8 JIT 介紹,推薦《

PHP8新特性JIT使用簡介》。

推薦文章:《

PHP8.0

#

以上是PHP 8.0 原始碼編譯安裝以及 JIT 嚐鮮的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

php5和php8有什麼差別 php5和php8有什麼差別 Sep 25, 2023 pm 01:34 PM

php5和php8的差異在效能、語言結構、型別系統、錯誤處理、非同步程式設計、標準函式庫函數和安全性等方面。詳細介紹:1、效能提升,PHP8相對於PHP5來說在效能方面有了巨大的提升,PHP8引入了JIT編譯器,可以對一些高頻執行的程式碼進行編譯和最佳化,從而提高運行速度;2、語言結構改進,PHP8引入了一些新的語言結構和功能,PHP8支援命名參數,允許開發者透過參數名稱而不是參數順序等等。

php8怎麼加mysql擴展 php8怎麼加mysql擴展 Oct 07, 2023 pm 03:31 PM

php8加mysql擴充的步驟有:1.安裝MySQL客戶端函式庫;2、安裝PHP 8的開發工具;3、下載MySQL擴充原始碼;4、編譯和安裝MySQL擴充;5、啟用MySQL擴充;6、重啟Web伺服器即可。

圖文詳解apache2.4+php8.0的安裝設定方法 圖文詳解apache2.4+php8.0的安裝設定方法 Dec 06, 2022 pm 04:53 PM

本文為大家介紹如何安裝apache2.4,以及如何設定php8.0,文中附有圖文詳細步驟,以下就帶大家一起看看怎麼安裝設定apache2.4+php8.0吧~

php8怎麼連接資料庫 php8怎麼連接資料庫 Nov 16, 2023 pm 02:41 PM

PHP8可以使用mysqli和PDO來連接資料庫。詳細介紹:1、使用mysqli連接資料庫,透過傳入資料庫伺服器名稱、使用者名稱、密碼和資料庫名稱來連線。然後,使用`connect_error`屬性來檢查連線是否成功,如果連線失敗,則輸出錯誤訊息。最後,透過呼叫`close()`方法關閉連線;2、使用PDO連線資料庫,透過傳入資料庫伺服器名稱、密碼和資料庫名稱來進行連線等等。

php8資料類型怎麼轉換 php8資料類型怎麼轉換 Nov 16, 2023 pm 02:51 PM

php8資料型別的方法有字串轉換為整數、整數轉換為字串、字串轉換為浮點數、浮點數轉換為字串、陣列轉換為字串、字串轉換為陣列、布林值轉換為整數、整數轉換為布林值和變數類型判斷和轉換。詳細介紹:1、字串轉換為整數包括intval()函數和(int)強制型別轉換;2、整數轉換為字串包括strval()函數和(string)強制型別轉換;3、字串轉換為浮點數等等。

一文深入了解 PHP 8 中的 JIT 一文深入了解 PHP 8 中的 JIT Apr 25, 2022 pm 08:46 PM

這篇文章帶大家了解一下PHP 8 的 JIT,並聊聊JIT 是怎麼參與解釋流程的,希望對大家有幫助!

php8到底有哪些效能提升 php8到底有哪些效能提升 Dec 21, 2023 pm 02:44 PM

php8提高的效能包括:1、JIT編譯器的引進;2、函數呼叫的最佳化;3、垃圾回收機制的改進;4、型別系統的改良;5、新的語言特性;6、最佳化字串處理; 7.改進數組處理;8、引入新的記憶體管理機制;9、最佳化程式碼產生。詳細介紹:1、JIT編譯器的引入,PHP8引入了JIT編譯器,這是一種動態編譯技術,能夠將PHP程式碼轉換為機器碼,以便更有效率地執行;2、函數呼叫的最佳化等等。

提升程式碼執行速度:學習PHP8的JIT技術 提升程式碼執行速度:學習PHP8的JIT技術 Jan 26, 2024 am 10:06 AM

解锁PHP8的JIT技术:优化你的代码执行速度随着2020年末PHP8的发布,其中最令人兴奋的新特性之一是引入了JIT(Just-in-Time)编译器技术。JIT技术能够显著提高PHP代码的执行速度,尤其是那些密集计算和循环的代码片段。在本文中,我们将探索如何利用PHP8的JIT技术来优化代码执行速度,同时提供一些具体的代码示例。一、什么是JIT编译器?J

See all articles