亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
安裝依賴項(xiàng)
下載PHP源
牢記性能配置
編譯並安裝
設(shè)置配置文件
3???jī)效增長(zhǎng):期望什麼
可選:?jiǎn)⒂梅e極的編譯器標(biāo)誌
最終提示
首頁 後端開發(fā) php教程 揭開PHP彙編的神秘面紗:從源構(gòu)建自定義PHP以獲得最佳性能

揭開PHP彙編的神秘面紗:從源構(gòu)建自定義PHP以獲得最佳性能

Jul 25, 2025 am 06:59 AM
PHP Installation

對(duì)於大多數(shù)項(xiàng)目而言,從源頭編譯PHP並不是必需的,但可以完全控制峰值性能,最小的膨脹和特定的優(yōu)化。 2。它涉及將PHP的C源代碼轉(zhuǎn)換為可執(zhí)行文件,允許自定義,例如剝離未使用的擴(kuò)展,啟用了CPU特定的優(yōu)化和集成自定義庫(kù),可能會(huì)產(chǎn)生5-15%的吞吐量。 3。要從源構(gòu)建php 8.3,安裝依賴項(xiàng),下載源,使用以性能為中心的標(biāo)誌(例如, - 可見的debug, - enable-opcache, - without-pear),使用make進(jìn)行編譯,然後安裝到自定義目錄中,以避免衝突。 4。關(guān)鍵配置選項(xiàng)包括設(shè)置 - 用於隔離的預(yù)訂,啟用用於Web使用的FPM,禁用CGI和PEAR以減少開銷,並在php.ini中調(diào)整OPCACHE,並使用opcache.memory_consumptiment.memory_consumption = 256和opcache.validate_timestamps.timestamps = 0。 5。性能增長(zhǎng)來自較小的二進(jìn)製文件,編譯器優(yōu)化(例如-March =本機(jī)),更緊密的庫(kù)集成和特定於工作負(fù)載的OPCACHE TUNING。 6.積極的編譯器標(biāo)誌,例如-O2和-March =本機(jī)可以通過CFLAGS設(shè)置在配置之前,以優(yōu)化主機(jī)CPU,但是由於潛在的緩存懲罰,應(yīng)避免使用-O3。 7。主要的陷阱不包括自動(dòng)安全更新,以後無法管理擴(kuò)展程序,在使用CPU特定的標(biāo)誌時(shí),在沒有調(diào)試符號(hào)的情況下調(diào)試挑戰(zhàn)以及缺乏二進(jìn)制便攜性。 8。這種方法最適合專用服務(wù)器或控制和效率很重要的高流量應(yīng)用程序,但對(duì)於共享託管或小型項(xiàng)目來說是過度的。 9.最終建議包括在重新配置時(shí)使用“清潔”,將配置命令保存在腳本中以進(jìn)行可重複性,使用Apache Bench或K6等工具進(jìn)行實(shí)際工作負(fù)載進(jìn)行測(cè)試,以及與Docker的構(gòu)建容器以保持一致的部署。從源編譯PHP正確完成後,可提供可衡量的性能優(yōu)勢(shì),但需要仔細(xì)維護(hù)和徹底的測(cè)試以證明運(yùn)營(yíng)開銷合理。

揭開PHP彙編的神秘面紗:從源構(gòu)建自定義PHP以獲得最佳性能

為什麼要從源中編譯PHP?

揭開PHP彙編的神秘面紗:從源構(gòu)建自定義PHP以獲得最佳性能

您不需要從源頭編譯大多數(shù)項(xiàng)目的php,即從操作系統(tǒng)或Homebrew,Docker或Package Manager(例如APT或YUM)等工具中構(gòu)建的包裝包裝,效果很好。但是,如果您正在追逐峰值性能,最小的膨脹或特定的低級(jí)優(yōu)化,則來自源的PHP可以完全控制。本指南介紹了自己編制PHP的原因如何陷阱,以獲得最佳性能。


1。 “彙編PHP”實(shí)際上是什麼意思

PHP用C編寫。當(dāng)您下載PHP源代碼時(shí),您正在獲取需要將其編譯到二進(jìn)制可執(zhí)行文件中的C文件。系統(tǒng)可以運(yùn)行。標(biāo)準(zhǔn)的php CLI, php-fpm過程或Apache模塊 - 都從同一源編譯。

揭開PHP彙編的神秘面紗:從源構(gòu)建自定義PHP以獲得最佳性能

當(dāng)您通過軟件包管理器安裝PHP時(shí),您將使用其他人編譯的二進(jìn)製文件 - 通常使用通用設(shè)置來處理大多數(shù)係統(tǒng)。通過自己編譯,您:

  • 剝離未使用的擴(kuò)展
  • 啟用CPU特異性優(yōu)化
  • 使用較新的編譯器或標(biāo)誌以提高性能
  • 與自定義庫(kù)集成(例如,特定的SSL或圖像處理LIB)

這不是魔術(shù),但是當(dāng)正確完成時(shí),它可以在現(xiàn)實(shí)世界應(yīng)用中產(chǎn)生5-15%的吞吐量。

揭開PHP彙編的神秘面紗:從源構(gòu)建自定義PHP以獲得最佳性能

2。逐步:從來源建造PHP 8.3

我們將以PHP 8.3(截至2024年,最新的穩(wěn)定版本)為例。這些步驟假設(shè)Ubuntu/Debian;調(diào)整您的操作系統(tǒng)。

安裝依賴項(xiàng)

sudo apt更新
sudo apt install -y build-exental autoconf libxml2-dev \
libssl-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev \
libpng-dev libfreetype6-dev libzip-dev libonig-dev

下載PHP源

CD /TMP
WGET https://www.php.net/distributions/php-8.3.10.tar.gz
TAR -XZF php -8.3.10.tar.gz
CD PHP-8.3.10

牢記性能配置

這是自定義發(fā)生的地方。使用./configure來定義構(gòu)建的內(nèi)容。

 ./configure \
-prefix =/opt/php-8.3-custom \
 -  Enable-fpm \
 -  with-fpm-user = www-data \ www-data \
 -  with-fpm group = www-data \
 - 可啟示\
 - 啟用pcntl \
 - 啟用sockets \
 -  Enable-zip \
 - 卷\ \
 -  with-jpeg \
 - 造型\
 -  with-openssl \
 - 與zlib \
 - 可見debug \
 -  eNable-opcache \
 -  with-config-file-path =/etc/php/8.3-custom \
 -  with-config-file-scan-dir =/etc/php/php/8.3-custom/conf.d \
 - 可見cgi \
 - 無套

鑰匙旗解釋了:

  • --prefix :安裝到自定義目錄,以免干擾系統(tǒng)PHP
  • --enable-fpm :用於NGINX/APACHE的Web使用
  • --disable-debug :刪除調(diào)試符號(hào)和檢查(更快的執(zhí)行速度)
  • --enable-opcache :性能至關(guān)重要;預(yù)加載和緩存編譯了腳本
  • --disable-cgi :減少攻擊表面和未使用的二進(jìn)制
  • --without-pear :梨已經(jīng)過時(shí);除非需要

??不要啟用每個(gè)擴(kuò)展。僅添加您的應(yīng)用程序使用的內(nèi)容。每個(gè)人都會(huì)消耗內(nèi)存和啟動(dòng)時(shí)間。


編譯並安裝

製作-j $(nproc)#使用所有CPU內(nèi)核
Sudo進(jìn)行安裝

根據(jù)您的機(jī)器,這需要5-15分鐘。

設(shè)置配置文件

sudo mkdir -p /etc/php/8.3-custom
sudo cp php.ini-production /etc/php/8.3-custom/php.ini
sudo cp/opt/php-8.3-custom/etc/php-fpm.conf.default/opt/php-8.3-custom/etc/etc/php-fpm.conf
sudo cp/opt/php-8.3-custom/etc/php-fpm.d/www.conf.conf.default/opt/php-8.3-custom/etc/etc/php-fpm.d/www.conf

編輯/etc/php/8.3-custom/php.ini

 opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_cummumption = 256
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = 0;只有生產(chǎn)!

?在開發(fā)中設(shè)置validate_timestamps=1以重新加載腳本進(jìn)行更改。


3。績(jī)效增長(zhǎng):期望什麼

您不會(huì)加倍PHP的速度,但這是您獲得的地方:

  • 較小的二進(jìn)制大小:更少的擴(kuò)展=每個(gè)過程的內(nèi)存更少
  • 編譯器優(yōu)化:GCC或Clang可以為您的CPU優(yōu)化(例如-march=native
  • 更嚴(yán)格的集成:使用較新的庫(kù)(例如OpenSSL 3.0或System Libzip)
  • opcache調(diào)用您的工作量:更多內(nèi)存,更好的文件限制

可選:?jiǎn)⒂梅e極的編譯器標(biāo)誌

./configure之前編輯CFLAGS

導(dǎo)出cflags =“  -  o2 -march =本機(jī)-mtune =本機(jī)”
  • -O2 :優(yōu)化性能(默認(rèn)值為-O1在許多構(gòu)建中)
  • -march=native :生成針對(duì)您的CPU優(yōu)化的代碼(SIMD,指令集)

??不使用-O3 。它可以增加代碼尺寸並損害緩存性能。 -O2更安全,通常更快。


4。陷阱和警告

  • 無自動(dòng)更新:您負(fù)責(zé)安全補(bǔ)丁。監(jiān)視PHP發(fā)布。
  • 擴(kuò)展地獄:以後安裝PECL擴(kuò)展名可能需要相同的構(gòu)建環(huán)境。
  • 調(diào)試複雜性:核心轉(zhuǎn)儲(chǔ)或segfaults需要調(diào)試符號(hào)(暫時(shí)使用--enable-debug )。
  • 不移植:用-march=native製造的二進(jìn)製文件不會(huì)在較舊的CPU上運(yùn)行。

?最佳:專用服務(wù)器,高流量應(yīng)用程序,您控制基本圖像的容器。

?過度殺傷:共享託管,小地點(diǎn),快速原型製作。


最終提示

  • 如果重新配置以避免過時(shí)的對(duì)象,請(qǐng)使用make clean
  • 將您的./configure行放在腳本中以供重複可重複
  • 使用實(shí)際工作負(fù)載(例如Apache Bench或K6)測(cè)試性能,而不僅僅是php --version
  • 考慮使用Docker來容器化您的自定義構(gòu)建以保持一致性

基本上,從源中編譯PHP並不適合所有人,但是當(dāng)您需要效率的最後10%或想要消除膨脹時(shí),它是一個(gè)強(qiáng)大的工具。收益是真實(shí)的,但維護(hù)成本也是如此。了解您的用例,徹底測(cè)試並自動(dòng)化構(gòu)建。

以上是揭開PHP彙編的神秘面紗:從源構(gòu)建自定義PHP以獲得最佳性能的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
掌握PHP-FPM和NGINX:高性能設(shè)置指南 掌握PHP-FPM和NGINX:高性能設(shè)置指南 Jul 25, 2025 am 05:48 AM

NginxhandlesstaticfilesandroutesdynamicrequeststoPHP-FPM,whichprocessesPHPscriptsviaFastCGI;2.OptimizePHP-FPMbyusingUnixsockets,settingpm=dynamicwithappropriatemax_children,spareservers,andmax_requeststobalanceperformanceandmemory;3.ConfigureNginxwit

在MacOS上設(shè)置PHP 在MacOS上設(shè)置PHP Jul 17, 2025 am 04:15 AM

推薦使用Homebrew安裝PHP,運(yùn)行/bin/bash-c"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安裝Homebrew,再執(zhí)行brewinstallphp或指定版本如brewinstallphp@8.1;安裝後編輯對(duì)應(yīng)路徑的php.ini文件調(diào)整memory_limit、upload_max_filesize、post_max_size和display_

利用WSL 2的力量來實(shí)現(xiàn)Linux-intagity PHP開發(fā)工作流程 利用WSL 2的力量來實(shí)現(xiàn)Linux-intagity PHP開發(fā)工作流程 Jul 26, 2025 am 09:40 AM

wsl2isthenewstanceforseriousphpdevelopmentonwindows.1.installwsl2withubuntuingusingwsl-install,thenupdatewithsudoaptupdat E && sudoaptupgrade-y,keepprojectsinthelinuxfilesystemforoptimalperformance.2.installphp8.3andComposerviaondEjsurysppa

揭開PHP彙編的神秘面紗:從源構(gòu)建自定義PHP以獲得最佳性能 揭開PHP彙編的神秘面紗:從源構(gòu)建自定義PHP以獲得最佳性能 Jul 25, 2025 am 06:59 AM

彙編phomerceisnotn coresemencomeformostprojectsbutprovidesfuidsfuidsfudsfiidesfulstrolcontrolforperperance,minimalbloat,andspecificoptimization.2.itinvolvesConvertingPhpphpphp'scsourcececececececeodeintoIntoExecutables,允許customizationLikizationLikeStripingunusedunsuptipingunseftimpipingunseftimpippingunsippingsextensenions enablingCpuspucpu

從頭開始在AWS EC2上部署可擴(kuò)展的PHP環(huán)境 從頭開始在AWS EC2上部署可擴(kuò)展的PHP環(huán)境 Jul 26, 2025 am 09:52 AM

LaunchanEC2instancewithAmazonLinux,appropriateinstancetype,securesecuritygroup,andkeypair.2.InstallLAMPstackbyupdatingpackages,installingApache,MariaDB,PHP,startingservices,securingMySQL,andtestingPHP.3.DecouplecomponentsbymovingdatabasetoRDS,storing

解鎖峰值PHP性能:配置OPCACHE和JIT編譯 解鎖峰值PHP性能:配置OPCACHE和JIT編譯 Jul 24, 2025 pm 09:58 PM

OPcache和JIT是PHP8.0 性能優(yōu)化的核心工具,正確配置可顯著提升執(zhí)行效率;1.啟用OPcache并設(shè)置opcache.enable=1、opcache.memory_consumption=192、opcache.max_accelerated_files=20000、opcache.validate_timestamps=0以實(shí)現(xiàn)opcode緩存并減少解析開銷;2.配置JIT通過opcache.jit_buffer_size=256M和opcache.jit=1254啟用追蹤JIT

自動(dòng)化PHP環(huán)境設(shè)置:將PHP集成到CI/CD管道中 自動(dòng)化PHP環(huán)境設(shè)置:將PHP集成到CI/CD管道中 Jul 26, 2025 am 09:53 AM

ChooseaCI/CDplatformlikeGitHubActionsorGitLabCIfortightversioncontrolintegrationandminimalinfrastructure;2.DefineaconsistentPHPenvironmentusingcontainerizationwithimageslikephp:8.2-cliorcomposer:latestandinstalldependenciesviacomposerinstall--no-inte

故障排除常見的PHP安裝陷阱:診斷清單 故障排除常見的PHP安裝陷阱:診斷清單 Jul 26, 2025 am 09:50 AM

verifySystemRequirements and dipendenciesbyConfirmingoScompatiby andInstallingSenlingEssentialLibrariesandBuildTools,使用PackageManagerSlikeSlikeAptoryUmTosImplifyDependentyDependentymanagement.2.Checkphpphpphpphpphpphpphpconfigurationand and conconfigurationAndCompConfigurationAndCompilationErrateRrationRuntirNumentByRunningMinimal./confictecomma

See all articles