欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

網(wǎng)站優(yōu)化之pHp并發(fā)性能性能提升104%調(diào)優(yōu)實戰(zhàn)

2023-11-16    分類: 網(wǎng)站建設(shè)

2012 年有一篇很火的博客:pHp: a fractal of bad design。作者在文中對 pHp 大張撻伐,幾乎就差說這是反人類的設(shè)計了。第一次讀到此文時,我正在一個惡心的地方處理很多遺留的 pHp 項目。讀完文章時,我開始思考是否要辭職去做一些與編程完全不同的事情。

幸運的是,此后不久我就換了工作,而且 pHp 從 5.* 開始也成長了很多。今天,我想對那些不再使用 pHp 編程,或者被遺留項目困擾的人說點什么。

Spoiler:pHp 跟其他編程語言一樣,都有點自己的小毛病。很多核心函數(shù)的方法簽名不一致,配置設(shè)置仍然不清不楚,仍然有很多開發(fā)人員在寫蹩腳的代碼——因為他們必須這樣做,或者說,他們沒有更好的方法。

但今天,我想說的是 pHp 好的一面:看看 pHp 的成長,共同探討一下如何編寫干凈且可維護的 pHp 代碼。希望大家可以暫時把偏見放進肚子里,哪怕只有幾分鐘。等我說完,你可以把它們再拿出來,但是你一定會驚訝于過去幾年里 pHp 的成長。

快速閱讀

  • pHp 每年都在積極開發(fā)新版本

  • 自 pHp 5 時代以來,性能至少翻了一番,甚至有可能是曾經(jīng)的三倍

  • 有極其活躍的框架、包和平臺生態(tài)系統(tǒng)

  • 過去幾年增加了很多新特性,語言也在不斷發(fā)展中

  • 像靜態(tài)分析器這樣的工具已經(jīng)成熟,并且會越來越多

更新:有人讓我展示一些代碼示例,這當(dāng)然可以!下面有兩個例子:一個是我比較喜歡的項目,是用 pHp 和 Laravel 語言編寫的;還有一個是我們辦公室維護的幾百個 OSS 包的列表。代碼地址如下:

  • https://github.com/brendt/aggregate.stitcher.io

  • https://spatie.be/opensource/packages

那我們開始吧。

歷史背景

首先,我們快速回顧一下 pHp 的發(fā)布周期?,F(xiàn)在的 pHp 版本是 7.3,預(yù)計 2019 年底將發(fā)布 7.4,然后下個版本將是 pHp 8.0。

自 5.* 時代之后,其核心團隊努力保持著一年一版本的發(fā)布周期,并在過去四年中成功做到了這一點。

一般來說,每一個新版本都有兩年的有效支持期,然后再用一年來做「安全修復(fù)」。這么做的目的是鼓勵 pHp 開發(fā)人員盡可能使用最新版本,因為每年的小升級比從 5.4 跳到 7.0 版本要容易得多。

pHp 的版本時間表如下:

其中,pHp 5.6 是 5.*時代的最新版本,它的下一個版本就是 7.0。如果您想知道 pHp 6 發(fā)生了什么,可以收聽 pHp 圓桌播客 :

https://www.phproundtable.com/episode/what-happened-to-php-6

了解這些之后,我們可以進一步探討關(guān)于 pHp 的常見誤解了。

pHp 性能

5.* 時代的 pHp 性能充其量也不過是平均水平,但是在 7.0 中,pHp 核心的大部分內(nèi)容都被完全重寫,性能也因此提高了兩到三倍。

光說不練假把式,我們用基準(zhǔn)測試結(jié)果說話。有人對 pHp 的性能進行過基準(zhǔn)測試,這些測試被很好地記錄在了 Kinsta 上:

https://kinsta.com/blog/php-benchmarks/

自從 7.0 出現(xiàn)以后,pHp 的性能一直處于上升期。pHp web 應(yīng)用的性能與其他語言的 web 框架相當(dāng) (在某些情況下甚至更好)。不信可以看看這個通用基準(zhǔn)測試包:

https://github.com/thebenchmarker/webframeworks

pHp 框架雖然沒辦法做到比 C 和 Rust 更好,但是它比 Rails 或 Django 要好得多,并且可以與 ExpressJS 相媲美。

框架和生態(tài)系統(tǒng)

說到框架,pHp 已經(jīng)不再只是 Wordpress 了。作為一名專業(yè)的 pHp 開發(fā)人員,我想說的是:Wordpress 根本不能代表現(xiàn)在的生態(tài)系統(tǒng)。

一般有兩個主要的 web 應(yīng)用程序框架和一些小框架,比如 Symfony 和 Laravel。當(dāng)然,還有 Zend、Yii、Cake、Code Igniter 等,但是只有這兩種主要的框架才能代表如今的 pHp。

這兩個框架都有一個包含大量包和產(chǎn)品的生態(tài)系統(tǒng)。從管理面板和 CRM 到獨立的軟件包、CI、profiler,眾多如 web sockets 服務(wù)器、隊列管理器、支付集成這樣的服務(wù)...... 可以拿得出手的東西太多了。

不過,這些框架是用于實際開發(fā)的。如果你需要純粹的內(nèi)容管理,像 Wordpress 和 CraftCMS 這樣的平臺只會越來越好。

測試 pHp 生態(tài)系統(tǒng)當(dāng)前狀態(tài)的一種方法是查看 packagist,它是 pHp 的主要 package 存儲庫。它呈指數(shù)級增長,每天大約有 2500 萬次的下載量。公平地說,pHp 生態(tài)系統(tǒng)已經(jīng)不再是過去的小輸家了。

下面的圖表,列出了包和版本的數(shù)量隨時間的變化。

除了應(yīng)用程序框架和 CMS,近年來異步框架也逐步興起。

這些框架和服務(wù)器是用 pHp 或其他語言編寫的,通過這些框架,用戶可以實現(xiàn)真正的異步 pHp。Swoole、Amp 和 ReactpHp 都是很好的例子。

自從我們進入異步世界以來,像 web sockets 和具有大量 IO 的應(yīng)用程序之類的東西已經(jīng)與 pHp 世界息息相關(guān)。

在內(nèi)部郵件列表(內(nèi)核開發(fā)人員討論如何開發(fā)該語言的地方)上也有關(guān)于將 libuv 添加到內(nèi)核的討論。

語言本身

雖然 async 和 await 功能都還不能用,但是在過去幾年里,pHp 語言本身已經(jīng)做了很多改進。下面列出了 pHp 的部分新特性:

  • Short Closures

  • Null coalescing operator

  • Trait

  • Typed properties

  • Spread operator

  • JIT compiler

  • FFI

  • Anonymous classes

  • Return type declarations

  • Contemporary cryptography

  • Generators

除了語言特性,我們也應(yīng)該看一下語言的發(fā)展過程。雖然社區(qū)也會提出 RFCs,但一個活躍的核心志愿團隊才是推動語言的發(fā)展的根本。

這些 RFCs 會在「內(nèi)部」郵件列表中進行討論。在添加新的語言特性之前,必須進行投票,獲得至少 2/3 支持的 RFC 才能被寫入內(nèi)核。

大概有 100 個人有投票權(quán),雖然他們不必對每個 RFC 都進行投票。這些人中必須包括核心團隊的成員,因為他們要維護代碼庫。剩下的投票者主要是從 pHp 社區(qū)中挑選出來的,這些人包括 pHp 文檔的維護者、整個 pHp 項目的貢獻者以及 pHp 社區(qū)中的杰出開發(fā)人員。

雖然大多數(shù)核心開發(fā)都是在自愿的基礎(chǔ)上完成的,但是作為核心 pHp 開發(fā)人員之一,Nikita popov 最近已被 Jetbrains 聘用,成為了全職的 pHp 開發(fā)者。另外,Linux 基金會最近也決定投資 Zend framework。這樣的雇傭和收購確保了 pHp 未來發(fā)展的穩(wěn)定性。

工具包

除了程序內(nèi)核本身,pHp 工具包的數(shù)量也在不斷增加。靜態(tài)分析器 psalm(由 Vimeo 創(chuàng)建)、phan 和 pHpStan 都是很好的例子。

這些工具可以對 pHp 代碼做靜態(tài)分析,并會報告任何類型的錯誤、可能的 bug 等。在某種程度上,它們的功能幾乎可以趕上 TypeScript 了,不過目前這種語言還無法實現(xiàn)源到源編譯,因此不允許使用自定義語法。

盡管這意味著我們需要依賴 docblock,但 pHp 的最初創(chuàng)建者 Rasmus Lerdorf 確實提到了向內(nèi)核添加靜態(tài)分析引擎的想法。這個想法潛力巨大,但這是一項艱巨的任務(wù)。

為了像 JavaScript 那樣實現(xiàn)源到源編譯,pHp 開發(fā)者們也一直努力在用戶端擴展 pHp 語法。一個名為 pre 的項目就在做這樣的事:將新的 pHp 語法轉(zhuǎn)換為普通的 pHp 代碼。

雖然 JavaScript 中已經(jīng)實現(xiàn)了這個想法,但是只有提供合適的 IDE 和靜態(tài)分析支持,它才能在 pHp 中工作。這個想法很有意思,但它還需要不斷成長,才有可能成為「主流」。

結(jié)語

說了這么多,你仍然可以吐槽說 pHp 是一種蹩腳的語言。雖然它還是有一些缺點和 20 年的遺留問題,但我仍然熱愛這門語言。

以我的經(jīng)驗來看,我能夠?qū)懗隹煽恳拙S護且高質(zhì)量的軟件。我和客戶對最終的結(jié)果也都是滿意的。

雖然使用 pHp 還會有一些亂七八糟的事情,但如果使用得當(dāng),我認為它還是一個不錯的網(wǎng)絡(luò)開發(fā)選擇。

當(dāng)前文章:網(wǎng)站優(yōu)化之pHp并發(fā)性能性能提升104%調(diào)優(yōu)實戰(zhàn)
URL地址:http://chinadenli.net/news13/294813.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、微信公眾號、云服務(wù)器、網(wǎng)站排名、建站公司、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司
欧美在线视频一区观看| 欧美激情床戏一区二区三| 沐浴偷拍一区二区视频| 久久精品国产在热亚洲| 成年人黄片大全在线观看| 亚洲欧美日韩另类第一页| 大香蕉精品视频一区二区| 国产日韩欧美综合视频| 日韩精品一区二区亚洲| 国产精品伦一区二区三区四季| 东北老熟妇全程露脸被内射| 国产欧美日产中文一区| 日本不卡一区视频欧美| 韩日黄片在线免费观看| 国产精品成人一区二区在线| 欧美一区二区口爆吞精| 国产又粗又爽又猛又黄的| 亚洲精品蜜桃在线观看| 精品老司机视频在线观看| 国产麻豆一线二线三线| 国产精品亚洲综合天堂夜夜| 日韩成人动作片在线观看| 国产亚洲欧美日韩精品一区| 欧美激情一区=区三区| 欧美不雅视频午夜福利| 日韩欧美国产亚洲一区| 91亚洲国产—区=区a| 国产黑人一区二区三区| 少妇人妻精品一区二区三区| 91麻豆视频国产一区二区| 国产成人精品午夜福利| 好吊日在线观看免费视频| 麻豆一区二区三区在线免费| 亚洲精品伦理熟女国产一区二区| 91老熟妇嗷嗷叫太91| 日韩在线视频精品中文字幕| 午夜精品久久久免费视频| 熟女少妇久久一区二区三区| 国产麻豆精品福利在线| 熟女高潮一区二区三区| 午夜午夜精品一区二区|