php框架性能測試您了解pHp嗎?的一件事情就是生態(tài)系統(tǒng)一如戰(zhàn)爭框架龍甲性能

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

LAMp 堆棧有了新的競爭,但此版本中的功能再次將 pHp 推向了極限。

2012 年 4 月發(fā)布

大約八年前,我為 寫了一篇名為“你知道 pHp 嗎?”的文章。 在那篇文章中,我談到了 pHp 對“Web 問題”的頑固的功能優(yōu)于形式的解決方案及其使事情變得簡單的能力。 當時,我們即將發(fā)布 pHp 5.0。 現(xiàn)在,在將近十年之后,我們有了全新的 pHp 5.4.0 版本,雖然在此期間發(fā)生了很多事情,但很多事情根本沒有改變。

沒有改變的一件事是生態(tài)系統(tǒng)一如既往地重要。 解決 web 問題不僅僅是腳本語言的選擇,而是圍繞它的整個生態(tài)系統(tǒng)。 現(xiàn)在將近 15 年了,LAMp 架構(gòu)仍然很流行,但我們開始注意到其他強大的選項。 隨附的 pHp-FpM 迅速流行起來,因為自 pHp 5.3 以來支持得到了極大改進,并在 5.4 中進一步簡化。 系統(tǒng)的 M(即數(shù)據(jù)庫)部分也開始看起來與 8 年前大不相同。 各種解決方案提供了更豐富的選擇,而不僅僅是將所有內(nèi)容都放入表格中。

那里有許多有趣的技術(shù),因此我們編寫了 pHp 擴展來輕松訪問它們。 我最喜歡的擴展之一是您可以使用它在 pHp 中編寫事件驅(qū)動的高性能應(yīng)用程序。 另一個是,這是一個高級套接字庫。 就像不需要編寫另一種原始文件格式和相關(guān)的解析器一樣,也沒有任何理由使用套接字協(xié)議和相關(guān)的套接字處理代碼。 您甚至可以組合并獲得一個獨立的、高性能的、事件驅(qū)動的高級服務(wù)器。 (如果您有興趣,請參閱此示例。)我也非常喜歡 SVM(支持向量機)機器學(xué)習(xí)算法,您不必成為機器學(xué)習(xí)迷也可以問很多問題。

還有許多擴展在最近幾年獲得了廣泛的認可。 特別是流行起來php框架性能測試,逐漸成為用戶部署的通用架構(gòu)的一部分。 您可以分派作業(yè),以便它們由工作人員異步完成。 可以分布在多個服務(wù)器上,甚至可以進一步分派到更多類型的工作中。

2004 年發(fā)布 pHp 5.0,2005 年發(fā)布 5.1,增加了實現(xiàn)、pDO 和性能改進。 pHp 5.2 于 2006 年發(fā)布,引入了改進的內(nèi)存管理器、JSON 支持和輸入過濾。 當時,我們著手推動 pHp 6,這是一個非常雄心勃勃的計劃,要徹底重寫 ICU(國際化組件)庫的所有內(nèi)容。 事實證明,這個計劃很倉促——我們無法讓足夠多的開發(fā)人員對此感到興奮,最終將 pHp 6 中將要引入的各種特性添加到 2009 年發(fā)布的 pHp 5.3 5.2 和 5.3 版本中相隔 3 年,這也意味著 5.3 為 pHp 增加了很多內(nèi)容:命名空間、后期靜態(tài)綁定、閉包、垃圾收集、受限的 goto、(本機驅(qū)動程序)、更好的性能等等。

事后看來,將此版本稱為 pHp 6 可能有些道理php框架性能測試,但 pHp 6 等同于編寫有關(guān)它的書籍的努力,因此我們認為如果不對 pHp 6 進行重大改進,則無法發(fā)布。 我們引入了一個名為“intl”的 ICU 擴展,它也是針對 pHp 5.2 編譯的,它使您可以訪問更多 ICU 功能。 隨著時間的推移,擴展不斷改進,這意味著幾乎所有與 相關(guān)的問題都有解決方案,只是沒有明確地集成到語言本身。

這導(dǎo)致了 2012 年 pHp 5.4 的推出。此外,自上次發(fā)布以來已經(jīng)過去了將近 3 年,在此期間我們進行了一些改進。 我寧愿恢復(fù)到每年一個版本,每個版本包含更少的新功能。

以下是升級到 5.4 后您將看到的主要功能:

內(nèi)存和性能改進

許多內(nèi)部結(jié)構(gòu)已變得更小或完全消失,從而在大型 pHp 應(yīng)用程序中節(jié)省了 20-50% 的內(nèi)存。 通過各種優(yōu)化將性能提高 10-30%(主要取決于代碼在做什么)網(wǎng)站模板,包括內(nèi)聯(lián)各種通用代碼路徑、將 $ 添加到 JIT、使“@”運算符更快、添加運行時類/函數(shù)/常量緩存,運行時字符串常量現(xiàn)在被保留,通過預(yù)先計算的散列更快地訪問常量,空數(shù)組更快并且使用更少的內(nèi)存,()和請求處理得更快,以及整個代碼中更多的內(nèi)存和性能調(diào)整。

例如,一些早期測試表明,Zend 在 5.4 中運行速度提高了 21%,內(nèi)存使用量減少了 23%,而內(nèi)存使用量減少了 50%,運行速度提高了大約 7%。

可能是 pHp 5.4 中最受關(guān)注的功能 — 將它們視為編譯器輔助的復(fù)制粘貼。 這也是 . 其他語言可能稱它們?yōu)椤啊薄蛘吣切┱Z言根本不給它們命名,而是有一個擴展的接口機制,允許一個接口包含其方法的實際實現(xiàn)。

相比之下,pHp 包含針對同一方法的多個實現(xiàn)的顯式?jīng)_突解決機制。

{

() { ... }

}

一種 {

利用;

//...

}

乙{

利用;

//...

}

// 現(xiàn)在兩者都適用

一種::();

b::();

請參閱/獲取更多示例,包括沖突解決語法、方法優(yōu)先級、可見性以及對常量和屬性的支持。 此外,要了解有關(guān)概念理論的更多信息,您可以閱讀 Sch?rli 的論文“:行為構(gòu)建塊中的復(fù)合類”。

緊湊數(shù)組語法

添加了一個簡單但非常流行的語法:

$a = [1, 2, 3];

$b = ['foo' => '', 'bar' => ''];

也就是說網(wǎng)站模板,您現(xiàn)在不再需要使用“”關(guān)鍵字來定義數(shù)組。

函數(shù)數(shù)組取消引用

添加了另一個通用語法。 返回數(shù)組的函數(shù)調(diào)用現(xiàn)在可以直接取消引用:

() {

['', '', ''];

}

回聲()[0]; // :

實例方法調(diào)用

與函數(shù)數(shù)組取消引用相關(guān),您現(xiàn)在可以調(diào)用對象實例化方法。 與早期版本一樣,您當然仍然可以鏈接方法調(diào)用,因此您現(xiàn)在可以編寫如下代碼:

富 {

$x = 1;

getX() {

$這個->x;

}

setX($val) {

$this->x = $val;

$這個;

}

}

$X = (new foo)->setX(20)->getX();

回聲 $X; // 20

但是,除非您的構(gòu)造函數(shù)執(zhí)行有用的操作,否則您應(yīng)該在此處使用靜態(tài)方法調(diào)用,因為可能會丟棄實例化對象。 如果我們將其與緊湊的數(shù)組語法和函數(shù)數(shù)組解引用結(jié)合起來,我們可以編寫一些非常復(fù)雜的代碼:

富 {

($arr) {

::($arr);

}

}

echo (new foo( [1, [4, 5], 3] ))[1][0];

看了之后,你能說出輸出是什么嗎? 在這里,我們將一個二維數(shù)組傳遞給一個只返回數(shù)組的構(gòu)造函數(shù)。 然后,我們選擇第二個維度的第一個元素,所以這將輸出“4”。

閉包綁定

閉包是在 pHp 5.3 中引入的,但在 5.4 中我們改進了閉包與對象交互的方式。 例如:

富{

$道具;

($prop) {

$this->prop = $prop;

}

() {

() { echo ($this->prop); };

}

}

$a = new Foo('酒吧');;

$func = $a->();

$函數(shù)(); // : 酒吧

請注意,閉包訪問私有屬性 $this->prop。 默認情況下,pHp 中的閉包使用預(yù)綁定——這意味著閉包內(nèi)的變量具有定義閉包時的值。 這可以使用引用轉(zhuǎn)換為反向綁定。 但是,也可以重新綁定閉包:

$a = new Foo('酒吧');

$b = new Foo('');

$func = $a->();

$函數(shù)(); // : 酒吧

$func = $func->($b);

$函數(shù)(); // :

在這里,我們將閉包從 $a 實例重新綁定到 $b 中的實例。 如果你不想讓閉包在任何時候訪問對象實例,你可以將閉包聲明為靜態(tài)的:

富{

$道具;

($prop) {

$this->prop = $prop;

}

() {

() { echo ($this->prop); };

}

}

$a = new Foo('酒吧');;

$func = $a->();

$函數(shù)(); // : $this 不在的時候

作為函數(shù)的對象

有一種名為“”的新魔術(shù)方法,其用法如下:

{

$;

($價值) {

$this->= $val;

}

() {

('$%.2f', $this->);

}

}

$ = 新的 (11.02/5*13);

回聲 $(); // : 28.65 美元

內(nèi)置網(wǎng)絡(luò)服務(wù)器 (CLI)

CLI 服務(wù)器是一個小型 Web 服務(wù)器實現(xiàn),可以從命令行運行:

%php -S :8000

2012 年 3 月 11 日星期日 13:27:09 的 pHp 5.4.0

在:8080

根目錄是/home/

Ctrl-C 退出。

CLI 服務(wù)器不適合用作生產(chǎn) Web 服務(wù)器; 我們將使用它來運行一些 pHp 回歸測試,其他單元測試機制可以使用它,IDE 也可以使用它。 它確實具有一些有用的功能,可用于從命令行進行日常代碼調(diào)試。 默認情況下,它使用當前目錄作為; 它還處理靜態(tài)文件請求。 默認的目錄索引文件是“.php”,所以你可以在充滿.php、.css、.jpg等的目錄中激活它,它會自動運行。 對于可能使用發(fā)送所有請求的前端控制器或路由器的更復(fù)雜的應(yīng)用程序,您可以使用簡單的小腳本包裝此路由器并啟動 CLI 服務(wù)器,如下所示:

% php -S :8080 /路徑/到/.php

2012 年 3 月 11 日星期日 13:28:01 的 pHp 5.4.0

在:8080

根目錄是 /tmp/web

Ctrl-C 退出。

.php 腳本可能如下所示:

當前題目:php框架性能測試您了解pHp嗎?的一件事情就是生態(tài)系統(tǒng)一如戰(zhàn)爭框架龍甲性能
本文路徑:http://www.muchs.cn/news27/297377.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、域名注冊、品牌網(wǎng)站制作、全網(wǎng)營銷推廣、定制開發(fā)、網(wǎng)站策劃

廣告

聲明:本網(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è)