日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

高性能PHP7【筆記】

 硬核項目經(jīng)理 2021-05-31

一、搭建環(huán)境

二、PHP7新特性

A.OOP特性

1.類型聲明

  • PHP7支持的形參類型聲明的類型有整型、浮點型、字符串型、布爾類型,可以用在函數(shù)形參及對象的方法形參上

  • 返回類型聲明使用了data-type語法,對于形參類型聲明與返回類型聲明一樣的情況是無影響的,這樣就能區(qū)分開它們各自的返回數(shù)據(jù)類型了

  • 使用類型聲明有一個明顯的好處,即它可以讓函數(shù)、方法的形參與返回值有所預(yù)期,避免出現(xiàn)不必要的數(shù)據(jù)傳遞,從而造成錯誤

2.命名空間與use關(guān)鍵字批量聲明

  • 非混合模式的use聲明:use 命名空間\{類1,類2},use function 命名空間\(方法1,方法2),use const 命名空間\{常量1,常量2}

  • 混合模式的use聲明:use 命名空間\{類1,類2,function 方法1,function 方法2,const 常量1,const 常量2}

  • 復(fù)合模式的use聲明:use 命名空間\{命名空間1\類1,命名空間2\類2}

3.匿名類

  • 匿名類的聲明與使用是同時進(jìn)行的,具備其他類所具備的所有功能,差別在于匿名類沒有類名

  • 匿名類的一次性小任務(wù)代碼流程對性能提升幫助很大,不必將整個類寫完后再使用它

  • 語法:new class(argument){definition};

4.Throwable接口

  • PHP7提供了一種全局的接口,使得所有的類都可以基于此使用throw關(guān)鍵字

  • 從PHP7開始,任何完事程序或一部分程序中的Fatal錯誤都可以被截獲

  • 大多數(shù)的Fatal錯誤都會拋出一個error實例,類似于截獲異常,error實例可以被try/catch截獲

B.新的操作符

1.太空船操作符(<=>)

  • 在比較變量時非常有用,包括數(shù)值(字符串型、整型、浮點型等)、數(shù)組、對象

  • 當(dāng)符號兩邊相等時返回0

  • 當(dāng)符號右邊大于符號左邊時返回-1

  • 當(dāng)符號左邊大于符號右邊時返回1

  • 可以用于書寫清晰易讀的用于usort、uasort、uksort的回調(diào)函數(shù)

2.null合并運(yùn)算符(??)

  • 用于代替isset(x)?x:’’;

3.統(tǒng)一變量語法

C.其他特性和變更

1.常量數(shù)組:const STORES = ['en’, ’fr’, 'ar’]; php7:define(’STORES’,['en’, ’fr’, 'ar’]);

2.Switch中的多個default默認(rèn)值,在php7中會產(chǎn)生Fatal級別的錯誤

3.Session_start函數(shù)中的選項數(shù)組:可以在調(diào)用session_start([...])傳遞參數(shù)選項數(shù)組,這些設(shè)置信息將覆蓋php.ini中的session配置

4.Unserialize函數(shù)引入過濾器

三、PHP7應(yīng)用性能提升

A.HTTP Server優(yōu)化

1.緩存靜態(tài)文件

2.HTTP持久鏈接:表示一條TCP/IP鏈接上承載著多個上下行請求

3.GZIP壓縮

4.PHP獨立部署服務(wù)

5.關(guān)閉不用的模塊

B.內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)

1.CDN網(wǎng)絡(luò)通常服務(wù)于媒體文件

C.CSS與JavaScript優(yōu)化

1.合并:將所有CSS、JS文件進(jìn)行合并

2.縮?。簞h除空行、注釋和額外空格

3.Minify:是一組完全使用PHP編寫的庫,支持CSS、JavaScript文件的合并與縮小,代碼是面向?qū)ο蠛兔臻g的

4.Grunt:是一個JavaScript任務(wù)運(yùn)行器,能夠?qū)⒛承┲貜?fù)的任務(wù)自動化,避免反復(fù)工作

5..全頁緩存

6.Varnish:開源的Web應(yīng)用程序加速器

D.基礎(chǔ)設(shè)施

1.Web服務(wù)器

2.數(shù)據(jù)庫服務(wù)器

3.負(fù)載均衡(LB)

  • 負(fù)載均衡器(LB),根據(jù)每個Web服務(wù)器上的負(fù)載情況,將外網(wǎng)流量以一定規(guī)則分發(fā)給Web服務(wù)器

  • HAProxy,會檢查每個Web服務(wù)器的運(yùn)行狀況

四、提升數(shù)據(jù)庫性能

A.MySQL

1.查詢緩存

  • SHOW VARIABLES LIKE 'hav_query_cache’;

  • my.cnf文件中的配置參數(shù):query_cache_type,query_cache_size,query_cache_limit

2.存儲引擎

  • innodb_buffer_pool_size:系統(tǒng)內(nèi)存的50%-80%

  • innodb_buffer_pool_instances:每1GBinnodb_buffer_pool_size設(shè)置1,如16GB的innodb_buffer_pool_size則設(shè)置為16

  • innodb_log_file_size:1-4GB之間

3.Percona Server - MySQL的fork

  • 對MySQL完全兼容且提供加強(qiáng)功能,可完全代替MySQL并能提供更好的文檔、性能、擴(kuò)展性

  • 使用改進(jìn)的Innodb,XtraDB引擎

4.MySQL性能監(jiān)控工具

  • phpMyAdmin

  • Percona工具箱:pt-query-digest生成查詢報告,pt-duplicate-key-checker找出重復(fù)索引和外鍵,pt-variable-advisor輸出MySQL的配置信息以及對于每次查詢的建議

B.Redis鍵值緩存存儲

C.Memcached鍵值緩存存儲

五、調(diào)試和分析

A.Xdebug

六、PHP應(yīng)用的壓力/負(fù)載測試

A.Apache JMeter

B.ApacheBench(ab)

C.Siege

七、PHP編程最佳實踐

A.代碼風(fēng)格

1.類名中每個單詞的首字母必須大寫,左大括號應(yīng)該在類名后新起一行,右大括號應(yīng)該在類結(jié)束后新起一行

2.類的方法和函數(shù)命名應(yīng)該是駝峰式的,參數(shù)和緊跟著的逗號之間不應(yīng)有空格

3.命名空間的聲明之后應(yīng)該空一行

4.Visibility類的所有屬性都應(yīng)該明確指出其可見性并且屬性名應(yīng)該是駝峰式的

5.要是有abstract關(guān)鍵字的話,則一定是在class關(guān)鍵字之前 的,final關(guān)鍵字則應(yīng)該在方法可見性之前,static關(guān)鍵字是在方法可見性之后的

6.所有PHP關(guān)鍵字都應(yīng)該小寫,包括true和false,常量應(yīng)該都大寫

7.對于所有控制結(jié)構(gòu)語句,控制結(jié)構(gòu)關(guān)鍵詞后都應(yīng)該有空格,表達(dá) 式和外面的括號之間不應(yīng)該有空格,

B.測試驅(qū)動開發(fā)

1.PHPUnit

C.部署和持續(xù)集成(CI)

1.PHPCI

2.Jenkins

3.Travis CI

https://github.com/zhangyue0503/php/tree/master/learningphp7highperformance/2

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多