乾貨:讓 PHP7 達到最高性能的幾個建議

編程語言 PHP Perl GCC 廣州中星 2017-05-13
  1. Opcache

記得啟用Zend Opcache,因為PHP7即使不啟用Opcache速度也比PHP-5.6啟用了Opcache快,所以之前測試時期就發生了有人一直沒有啟用Opcache的事情。啟用Opcache非常簡單,在php.ini配置文件中加入:

zend_extension=opcache.so

opcache.enable=1

opcache.enable_cli=1"

2. 使用新的編譯器

使用新一點的編譯器,推薦GCC 4.8以上,因為只有GCC 4.8以上PHP才會開啟Global Register for opline and execute_data支持,這個會帶來5%左右的性能提升(Wordpres的QPS角度衡量)

其實GCC 4.8以前的版本也支持,但是我們發現它支持的有Bug,所以必須是4.8以上的版本才會開啟這個特性。

3. HugePage

我之前的文章也介紹過: 讓你的PHP7更快之Hugepage ,首先在系統中開啟HugePages,然後開啟Opcache的huge_code_pages。

以我的CentOS 6.5為例,通過:

$sudo sysctl vm.nr_hugepages=512

分配512個預留的大頁內存:

$ cat /proc/meminfo | grep Huge

AnonHugePages: 106496 kB

HugePages_Total: 512

HugePages_Free: 504

HugePages_Rsvd: 27

HugePages_Surp: 0

Hugepagesize: 2048 kB

然後在php.ini中加入:

opcache.huge_code_pages=1

這樣一來,PHP會把自身的text段,以及內存分配中的huge都採用大內存頁來保存,減少TLB miss,從而提高性能。

除此之外,php是一個非常優秀的腳本語言,簡潔、高效,隨著4.0的發佈,越來越多的人使用它來進行動態網站的開發,可以說,php已經成為最優秀的internet開發語言之一,尤其對於那些需要能夠快速、高效地開發中小規模的商業應用的網站開發人員,php是其首選的語言。但是隨著php的應用的不斷增多,對於這些應用缺乏統一的標準和有效的管理,因此,php社區很難象perl社區的人們那樣方便的共享彼此的代碼和應用,因為php缺乏象cpan那樣的統一的代碼庫來分類管理應用的代碼模塊(熟悉perl的人都知道,cpan是一個巨大的perl的擴展模塊倉庫,編寫的應用模塊可以放在cpan下面的適當的分類目錄下面,其他的人可以很方便地複用,當然,你編寫應用模塊時候也需要遵守其中的準則。)

為此,pear就應運而生了,並且從4.04開始,隨著php核心一起被分發。

pear能給我帶來什麼好處?

1.如前所述,pear按照一定的分類來管理pear應用代碼庫,你的pear代碼可以組織到其中適當的目錄中,其他的人可以方便地檢索並分享到你的成果。

2.pear不僅僅是一個代碼倉庫,它同時也是一個標準,使用這個標準來書寫你的php代碼,將會增強你的程序的可讀性,複用性,減少出錯的機率。

3.pear通過提供2個類為你搭建了一個框架,實現了諸如析構函數,錯誤捕獲功能,你通過繼承就可以使用這些功能。

pear的編碼規則

pear的編碼規則包括縮進規則,控制結構,函數調用,函數定義,註釋,包含代碼,php標記,文件頭的註釋塊,cvs標記,url樣例,常量的命名這11方面。下面簡要地介紹一下:

縮進規則:

pear中需要使用4個空格來縮排代碼,並且不使用tab。如果你使用vim,將下列設置放入你的~/.vimrc中:

set expandtab

set shiftwidth=4

set tabstop=4

1. Laravel

<img alt="分享13款PHP開發框架" src="http://img1.gtimg.com/henan/pics/hv1/199/111/1568/101987704.jpg" />

這是一款簡潔、“優雅”的PHP開發框架,可謂是為WEB藝術家創造的。它可以讓開發者從麵條一樣雜亂的代碼中得到解脫,輕鬆構建一個完美的網絡應用程序,且使得每行代碼都簡潔、富於表達力。Laravel自帶了強大的Eloquent ORM和遷移工具,能夠完美地與MySQL、Postgres、SQL Server 和 SQLite協同工作。Laravel從開始就將測試作為重點功能,提供靈活的IoC容器、集成PHPUnit的測試工具。更方便的是Laravel適應所有級別的開發工作。

2. CodeIgniter

<img alt="分享13款PHP開發框架" src="http://img1.gtimg.com/henan/pics/hv1/198/111/1568/101987703.jpg" />

CodeIgniter是一個基於MVC模式、小巧但功能強大的PHP框架,作為一個簡單而“優雅”的工具包,它可以為PHP程序員建立功能完善的Web應用程序。如果你是一名使用共享主機,且為客戶所要求的期限而煩惱的開發人員,如果你已經厭倦了那些傻大笨粗的框架,那麼CodeIgniter就是你所需要的。CodeIgniter幾乎0配置、不需堅守限制性編碼規則、不需使用命令行,並廣泛兼容標準主機上的各種PHP版本和配置,有著清晰、完善的文檔。

3. CakePHP

<img alt="分享13款PHP開發框架" src="http://img1.gtimg.com/henan/pics/hv1/197/111/1568/101987702.jpg" />

CakePHP是一個運用了諸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名設計模式的快速開發框架。該項目主要目標是提供一個可以讓各種層次的PHP開發人員快速地開發出健壯的Web應用,而又不失靈活性。

CakePHP框架提供了強大的基礎來創建應用。CakePHP框架基於MVC模式,這使得開發者輕鬆地定製和擴展應用。該框架還提供了一個基本的組織結構,從文件名到數據庫表名,使整個應用保持一致性和邏輯性。

乾貨:讓 PHP7 達到最高性能的幾個建議

相關推薦

推薦中...