PHP 七問世,2億網(wǎng)站效能翻倍有望
Jun 13, 2016 pm 12:27 PM
PHP 7問世,2億網(wǎng)站效能翻倍有望
經(jīng)過10年的漫長等待,PHP 7終於正式問世了。這個影響全球8成網(wǎng)站的開發(fā)語言,一舉從5.0版,跳過了功敗垂成的6.0版,一舉進入了7.0時代。
20年前初夏,1995年6月8日,一位愛解決問題的C語言軟體工程師,苦於不知如何用C來做一個自己的個人首頁,因為沒人提供C語言版的網(wǎng)頁開發(fā)環(huán)境。他索性自己來寫一個,並命名為Personal Home Page Tools,簡稱PHP Tool。這就是日後用來開發(fā)出Facebook、Yahoo等全球2億多個網(wǎng)站的PHP語言最初的版本。而這位C語言開發(fā)者Rasmus Lerdorf,也就成了PHP之父。PHP隨著網(wǎng)際網(wǎng)路從1996年開始起飛,也迅速成為開發(fā)人員打造網(wǎng)站的首選技術(shù)。
不過,在快速進化的IT世界中,越早出現(xiàn)的技術(shù),往往也背負了越重的轉(zhuǎn)型包袱。PHP語言一路跟著作業(yè)系統(tǒng),從32位元架構(gòu)開始跨入64位元,在2004年推出的PHP 5更是一個體質(zhì)大改造的版本,順利地跨入了物件導(dǎo)向架構(gòu)的世界,穩(wěn)坐網(wǎng)站開發(fā)技術(shù)龍頭。即使微軟打著容易上手為號召,以ASP網(wǎng)站開發(fā)技術(shù)搶攻市場,PHP仍是許多網(wǎng)站開發(fā)者心目中的首選。2008年時,光在臺灣,每4個網(wǎng)站,至少有1個是採用PHP開發(fā)。
不過,2005年時, PHP在Unicode的支援過程上,重重摔了一跤。Unicode支援原本要成為PHP 6的主打特色,但在開發(fā)社群中對多國語言支援的爭論,和PHP效能議題的質(zhì)疑,衍生出了漫長的拉扯論戰(zhàn),也延宕了PHP 6的發(fā)展,甚至PHP 5.3的小改版都搶先在2009年支援了PHP 6的大部分功能(除了Unicode支援外),隔年春天,PHP 6計畫正式宣告失敗而終止,也讓PHP技術(shù)的發(fā)展,蒙上了一層陰霾。PHP 5持續(xù)改版推陳出新,但總是處於一種小改小修的優(yōu)化,而鮮有從根本上革新的大進步。儘管語言進展緩慢,但PHP的影響力卻是持續(xù)不墜,甚至越來越大,2013年初,Netcraft網(wǎng)站統(tǒng)計,全球超過2.4億個網(wǎng)站後端開發(fā)語言使用的就是PHP。
Rasmus Lerdorf今年5月來臺演講時告訴我,F(xiàn)acebook為了自家網(wǎng)站速度而重新改寫了PHP編譯引擎的JIT作法,引起了PHP開發(fā)者對於PHP語言效能的再思考。
2014年,開始有一群PHP開發(fā)者(包括了來自中國的惠新宸)展開PHP語言的重構(gòu),也就是PHP NG專案(PHP New Generation),為了提高效能,他們不惜重新檢視甚至改寫PHP語言原始碼,一試結(jié)果發(fā)現(xiàn),PHP程式的效能大幅提升了30%。
舊版PHP語言的發(fā)展目標是希望盡可能地提供更多功能,來滿足任何網(wǎng)站開發(fā)的需求,但新的PHP 7,則是希望兼顧效能和功能。Rasmus Lerdorf這樣說。
但要對一個已經(jīng)發(fā)展了10年,歷經(jīng)了全球開源開發(fā)人員精心雕琢之後的開發(fā)語言,還想要找出很大效能突破的關(guān)鍵,不是一件容易的事。
也因此,PHP 5重構(gòu)專案PHP NG的巨大成效,也獲得PHP開發(fā)社群支持,成了PHP 7的基礎(chǔ),開發(fā)社群轉(zhuǎn)而細細地推敲每一行PHP程式碼,想辦法從各種地方找出效能優(yōu)化的關(guān)鍵。
例如PHP核心開發(fā)團隊花了很多心力來縮減PHP程式執(zhí)行時所需搬動的記憶體位元數(shù),像是將PHP儲存變數(shù)的資料架構(gòu)zval從24位元縮減至16位元?;蚴侵匦聶z視CPU層級的程式碼運作過程,來確保PHP 7程式碼更能符合新一代的處理器架構(gòu)。
每一次修改的優(yōu)化可能只改善不到0.5%的效能,但經(jīng)過了數(shù)百次如此這樣斟酌推敲的成果,就讓PHP 7的效能比舊版提高了一倍。
儘管從PHP 5升級到7也不是一件容易的事,但對全球2億個用PHP開發(fā)的網(wǎng)站而言,PHP 7無疑是一個解決既有網(wǎng)站效能瓶頸的新救星。

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PhpisstillrelevantinMoDernEnterpriseEnvironments.1.ModerPhp (7.xand8.x) Angebote, strenge, jitkompilation und moderne Syntax, machte ma?geschneiderte Foreiglableforlarge-ScaleApplikationen

Um einen flexiblen PHP -Microservice zu erstellen, müssen Sie Rabbitmq verwenden, um eine asynchrone Kommunikation zu erreichen. 1. Decken Sie den Dienst über Nachrichtenwarteschlangen ab, um Kaskadenfehler zu vermeiden. 2. Konfigurieren Sie persistente Warteschlangen, anhaltende Nachrichten, Freigabebest?tigung und manuelles ACK, um die Zuverl?ssigkeit zu gew?hrleisten. 3.. Verwenden Sie exponentielle Backoff -Wiederholung, TTL und Dead Letter -Warteschlangenverarbeitungsfehler; 4. Verwenden Sie Tools wie Supervisford, um Verbraucherprozesse zu schützen und Herzschlagmechanismen zu erm?glichen, um die Gesundheit der Service zu gew?hrleisten. und letztendlich die F?higkeit des Systems erkennen, kontinuierlich in Fehlern zu arbeiten.

Vermeiden Sie N 1 Abfrageprobleme, reduzieren Sie die Anzahl der Datenbankabfragen, indem Sie die zugeh?rigen Daten im Voraus laden. 2. W?hlen Sie nur die erforderlichen Felder aus, um das Laden vollst?ndiger Entit?ten zu vermeiden, um Speicher und Bandbreite zu sparen. 3.. Verwenden Sie Cache-Strategien vernünftigerweise, z. 4. Optimieren Sie den Lebenszyklus der Entit?t und rufen Sie Clear () regelm??ig an, um den Speicher freizugeben, um den Speicherüberlauf zu verhindern. 5. Stellen Sie sicher, dass der Datenbankindex die generierten SQL -Anweisungen existiert und analysiert, um ineffiziente Abfragen zu vermeiden. 6. Deaktivieren Sie die automatische ?nderungsverfolgung in Szenarien, in denen ?nderungen nicht erforderlich sind, und verwenden Sie Arrays oder Leichtgewichtsmodi, um die Leistung zu verbessern. Die korrekte Verwendung von ORM erfordert die Kombination der SQL -überwachung, -gespeicherung, der Stapelverarbeitung und der geeigneten Optimierung, um die Anwendungsleistung zu gew?hrleisten und gleichzeitig die Entwicklungseffizienz beizubehalten.

Die Verwendung des richtigen PHP-Basisbildes und die Konfiguration einer sicheren, leistungsoptimierten Docker-Umgebung ist der Schlüssel zum Erreichen der Produktion. 1. W?hlen Sie PHP: 8,3-FPM-Alpine als Grundbild, um die Angriffsfl?che zu reduzieren und die Leistung zu verbessern. 2. Deaktivieren Sie gef?hrliche Funktionen über benutzerdefinierte Php.ini, deaktivieren Sie die Fehleranzeige und aktivieren Sie Opcache und JIT, um die Sicherheit und Leistung zu verbessern. 3.. Verwenden Sie Nginx als Reverse Proxy, um den Zugriff auf sensible Dateien einzuschr?nken und die PHP-Anforderungen korrekt an PHP-FPM weiterzuleiten. 4. Verwenden Sie mehrstufige Optimierungsbilder, um Entwicklungsabh?ngigkeiten zu entfernen, und richten Sie nicht Root-Benutzer auf, um Container auszuführen. 5. optionaler Aufsichtsbeh?rde zum Verwalten mehrerer Prozesse wie Cron; 6. überprüfen

Die Datei "Settings.JSON" befindet sich auf dem Pfad auf Benutzerebene oder Arbeitsbereichsebene und wird verwendet, um die VSCODE-Einstellungen anzupassen. 1. Benutzer-Level-Pfad: Windows ist C: \ Benutzer \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS is /users//library/applicationsupport/code/user/settings.json, Linux is /home/.config/code/usser/setings.json; 2. Pfad auf Arbeitsbereichsebene: .VSCODE/Einstellungen im Projekt Root Directory

Der Müllsammlung von PHP basiert auf der Referenzz?hlung, aber kreisf?rmige Referenzen müssen von einem periodischen kreisf?rmigen Müllsammler verarbeitet werden. 1. Die Referenzzahl gibt den Speicher sofort frei, wenn keine Referenz auf die Variable vorhanden ist. 2. Referenzreferenz bewirkt, dass Speicher nicht automatisch freigegeben werden kann, und es h?ngt davon ab, dass GC ihn erfasst und reinigt. 3.. GC wird ausgel?st, wenn das "m?gliche Wurzel" den Schwellenwert erreicht oder manuell gc_collect_cycles () aufruft; 4. Langzeit laufende PHP-Anwendungen sollten gc_status () überwachen und rechtzeitig gc_collect () aufrufen, um Speicherleckage zu vermeiden. 5. Zu den Best Practices geh?rt die Vermeidung von kreisf?rmigen Referenzen, die Verwendung von gc_disable () zur Optimierung der Leistungsschlüsselbereiche und Dereference -Objekte über die Clear () -Methode des ORM.

Mit Bref erm?glicht es PHP-Entwicklern, skalierbare, kostengünstige Anwendungen zu erstellen, ohne Server zu verwalten. 1.Bref bringt Php nach AWSLambda, indem er eine optimierte PHP -Laufzeitschicht bereitstellt, Php8.3 und andere Versionen unterstützt und sich nahtlos in Frameworks wie Laravel und Symfony integriert. 2.. 3. Führen Sie den Befehl ServerlessDeploy aus, um die Bereitstellung abzuschlie?en, apiCateway automatisch zu konfigurieren und Zugriffs -URLs zu generieren. 4. Für Lambda -Beschr?nkungen bietet BREF L?sungen.

ReadOmpropertiesinphp8.2canonlyBeSignedoncinstructororatDeklarationandCannotBemodifiedAfterward, durchsetzungsvermutbarkeitatheluagelevel.2.ToachedevimmiMmutability, WrapMutabletypesLikearrayObjecustomimmutablecollections
