㈠ 如何讓 php 性能問題不再飽受詬病
單台伺服器性能始終有極限,最好就是做分布式,把流量分攤到多台伺服器。 資料庫也可以做讀寫分離,所有大型網站都是這么構架的。
㈡ 請問為什麼PHP的性能比java的servlet性能好
很多Java EE應用伺服器的組件比較龐大,優化也不夠。
很多JSP/servlet的開發者對java和演算法不通,濫用字元串處理數據。寫出來的代碼效率極低。
導致同樣的實現不可能比PHP慢的Java寫出來的東西反而比PHP慢。
總之,比PHP慢是因為人不行。
㈢ python與php哪個性能高
語法:PHP 的語法看起來就像沒有經過精心設計一樣,很隨意。有的語法看似很方便(用點來連接字元串), 但是卻為之後擴展造成了很多麻煩(點沒法用於訪問對象的成員), 再比如比較蛋疼的命名空間的語法。Python 相比之下要好一點,但是 Python2 和 Python3 直接存在著一些不兼容的語法變動。
編寫 HTML 模版:PHP 可以非常方便地直接用來編寫 HTML 模版,Python 需要藉助其他的語言或庫來實現。
包管理器:PHP 的包管理器(PEAR)和擴展管理器(PECL)恐怕根本沒人用,這導致引入一個新依賴的成本很高,於是很多人傾向於自己造輪子而不是引入現成的庫。Python 有統一的包管理器,雖然也有問題,但要比 PHP 好得多,引入庫之後的命名空間管理也要比 PHP 好。
擴展和庫:PHP 和 Python 都可以用 C 來編寫擴展。相比之下 Python 可用的庫要更多一點。
運行方式:PHP 運行方式比較單一(php-fpm, mod_php), Python 則可以以 fastCGI 運行,也可以自行監聽埠來處理請求。
性能:因為 PHP 運行方式單一,opcode 緩存方案也比較成熟(APC, opcache),緩存 opcode 之後運行速度很快。Python 則可能需要更多地自行優化性能。
類型系統:PHP 和 Python 都是動態類型。PHP 對類型判別比較模糊,有很多陷阱,Python 則嚴格一些。
學習成本:PHP 和學習成本都不是很高。PHP 優勢在於有比較完整的官方中文文檔,而且 PHP 應用領域只有 Web, 所以需要學習的內容較少。Python 因為學習路線較多,不太容易找到適合自己的教程和資料。
社區:PHP 的資料遍地,但是高質量的中文社區較少,普遍對官方的新功能不是很關注。Python 則要好一點。
應用領域:PHP 僅在 Web 後端方面被使用,Python 應用領域更廣泛一點,如果需要將邏輯移植到其他平台(如桌面), Python 要方便一點。
㈣ php性能優化的幾個方法
面對一個性能問題是,第一步永遠是找到問題產生的原因,而不是去看技巧列表。搞明白產生瓶頸的原因,找到目標並且實施修復,然後再重新測試。查找瓶頸只是萬里長征的第一步,這里有些常用技巧,希望對最重要的第一步找到瓶頸能有所幫助。
使用監控方法(比如監控寶),進行benchmark和監控,網路,特別是網路狀況瞬息萬變,做得好的話5分鍾就可以找到瓶頸。
剖析代碼。必須了解那部分代碼耗時最多,在這些地方多多關注。
想找到瓶頸,請檢查每個資源請求(比如,網路、CPU、內存、共享內存、文件系統、進程管理、網路連接等等……)
先對迭代結構和復雜的代碼進行benchmark
在在真實負載下用真實數據進行真實測試,當然,如果可以最好用產品伺服器。
緩存
(Caching)
有些人認為緩存是解決性能問題最有效的辦法之一,試試這些:
使用OPCODE(操作碼)緩存,這樣腳本就不會在每次訪問時重新編譯一次。比如:啟用Windows平台上的windows緩存擴展。可以緩存opcode,文件,相對路徑,session數據和用戶數據。
考慮在多伺服器環境下使用分布式緩存
在調用imap_header()之前先調用imap_headers()
編譯
vs. 解釋(Compiling vs. Interpreting)
將PHP源碼編譯成機器碼。動態解釋執行同樣的編譯,但它是按行執行的。編譯為opcode是折中選擇,它可以將PHP源碼翻譯為opcode,之後opcode再轉為機器碼。以下為關於編譯與解釋的相關技巧:
上線之前將PHP代碼編譯為機器碼。opcode緩存盡管並不是最好的選擇,但依舊比解釋型來得強。或者,考慮將PHP代碼編譯成一個C擴展。
PHP的opcode編譯器(bcompiler)還不能在產品環境中使用
㈤ php性能更好的去重和是否存在
去重
很多時候操作數組去重,一般使用array_unique()函數,但是在大數組的情況下運行地慢一些
更好的方式:
//把數組的鍵值交換過來,因為數組的健不能重復,就實現了去重
$array = array('a', 'b', 'c', 'a', 'd');
$array = array_flip($array);
//修復數組鍵值序列
$array = array_keys($array)
//再把數組的鍵值交換回來
$array = array_flip($array);
判斷是否存在
一般情況下判斷一個值是否已在在數組中in_array(), in_array()性能不太好
更好的方式
$array = array('a', 'b', 'c', 'd');
if (isset(array_flip($array)['a'])){
};
㈥ php7.4性能如何
參考一下這篇文章
https://www.oschina.net/news/106908/php-7-4-early-benchmarks?p=2
㈦ 怎樣測試PHP的性能
/**
計時和內存佔用檢測
參數:
$o:bool型,取值[TRUE;FALSE]
說明:
主要用來計算網站的記憶體和執行時間
記憶體佔用的部份可能會不夠准確,不準確時顯示0
返回:
輸出記憶體佔用值和執行時間
用法:
Fun::Sys();
echoFun::Sys(TRUE);
PHP群:223494678
/**/
publicstaticfunctionSys($o=FALSE){
static$t1,$m1;
if(!$o){
$t1=function_exists('microtime')?microtime():0;
$m1=function_exists('memory_get_usage')?memory_get_usage():0;
return;
}unset($o);
$t2=function_exists('microtime')?microtime():0;
$m2=function_exists('memory_get_usage')?memory_get_usage():0;
$t1=explode('',$t1);
$t2=explode('',$t2);
$t2=sprintf("%.2fms",($t2[1]+$t2[0]-$t1[1]-$t1[0])*1000);
$m2-=$m1;$m2=($m2<0)?0:$m2;
$m2=($m2>=1024)?round($m2/1024,2).'Kb':$m2.'byte';
unset($t1,$m1);
return'<br>Mem:'.$m2.' Time:'.$t2;
}
㈧ PHP的優缺點是什麼
HP應該算是現在大中小非專業網站企業會優先使用的網站建設編程語言,相對於ASP和JSP來說,PHP在在很多方面更適合個人以及小型企業做開發,這主要是因為PHP本身獨特的優勢導致的,那麼下面小編就來為大家盤點PHP得到眾多企業支持的原因。
PHP的優勢包括:
1、開放源代碼
由於PHP開放源代碼,因此基本上可以在網路上找到適合自己的源代碼。
2、免費性
和其它技術相比,PHP本身免費,並且也是開源代碼。
3、快捷性
PHP程序開發快,運行快,技術本身學習快。由於PHP可以被嵌入於HTML語言,新詞相對於其他語言來說編輯簡單,實用性強,更適合初學者。
4、跨平台性強
由於PHP是運行在伺服器端的腳本,因此可以在多種平台上得到應用,包括了UNIX、LINUX、WINDOWS、Mac OS等系統。
5、效率高
PHP由於消耗相當少的系統資源,因此工作效率更高。
6、圖像處理
一般來說,PHP動態創建圖像,而且目前PHP圖像處理默認使用GD2。因此也可以配置為使用image magick進行圖像處理。
7、面向對象
在PHP4,PHP5 中,面向對象方面都做出了很大的改進,因此PHP完全可以用來開發大型商業程序。
8、專業專注
PHP同為類C語言,而且更重要的就是PHP以支持腳本語言為主。
上面介紹的八點內容就是關於PHP被廣大企業使用的優勢,其實PHP相對於其它幾種語言來說,更適合初學者學習和使用,因此想要入門的朋友可以多找一些材料來學習。
㈨ php7 性能怎麼提升
1.用單引號來包含字元串要比雙引號來包含字元串更快一些。因為PHP會在雙引號包圍的字元串中搜尋變數,單引號則不會。
2.如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近4倍。
3.$row['id'] 的速度是$row[id]的7倍。
4.echo 比 print 快,並且使用echo的多重參數(譯註:指用逗號而不是句點)代替字元串連接,比如echo $str1,$str2。
5.在執行for循環之前確定最大循環數,不要每循環一次都計算最大值,最好運用foreach代替。
6.注銷那些不用的變數尤其是大數組,以便釋放內存。
7.盡量避免使用__get,__set,__autoload。
8.require_once()代價昂貴。
9.include文件時盡量使用絕對路徑,因為它避免了PHP去include_path里查找文件的速度,解析操作系統路徑所需的時間會更少。
10.如果你想知道腳本開始執行(譯註:即伺服器端收到客戶端請求)的時刻,使用$_SERVER[『REQUEST_TIME']要好於time()。
11.函數代替正則表達式完成相同功能。
12.str_replace函數比preg_replace函數快,但strtr函數的效率是str_replace函數的四倍。
13.如果一個字元串替換函數,可接受數組或字元作為參數,並且參數長度不太長,那麼可以考慮額外寫一段替換代碼,使得每次傳遞參數是一個字元,而不是只寫一行代碼接受數組作為查詢和替換的參數。
14.使用選擇分支語句(譯註:即switch case)好於使用多個if,else if語句。
15.用@屏蔽錯誤消息的做法非常低效,極其低效。
16.打開apache的mod_deflate模塊,可以提高網頁的瀏覽速度。
17.資料庫連接當使用完畢時應關掉,不要用長連接。
18.錯誤消息代價昂貴。
19.在方法中遞增局部變數,速度是最快的。幾乎與在函數中調用局部變數的速度相當。
20.遞增一個全局變數要比遞增一個局部變數慢2倍。
21.遞增一個對象屬性(如:$this->prop++)要比遞增一個局部變數慢3倍。
㈩ 如何優化PHP性能
如果一個方法能被靜態,那就聲明它為靜態的,速度可提高1/4,甚至我測試的時候,這個提高了近三倍。
當然了,這個測試方法需要在十萬級以上次執行,效果才明顯。
其實靜態方法和非靜態方法的效率主要區別在內存:靜態方法在程序開始時生成內存,實例方法在程序運行中生成內存,所以靜態方法可以直接調用,實例方法要先成生實例,通過實例調用方法,靜態速度很快,但是多了會占內存。
任何語言都是對內存和磁碟的操作,至於是否面向對象,只是軟體層的問題,底層都是一樣的,只是實現方法不同。靜態內存是連續的,因為是在程序開始時就生成了,而實例申請的是離散的空間,所以當然沒有靜態方法快。
靜態方法始終調用同一塊內存,其缺點就是不能自動進行銷毀,而是實例化可以銷毀。