『壹』 php軟體開發中如何提高項目的運行效率
PHP軟體開發中如何提高項目的運行效率
如何提高PHP程序執行效率?編程習慣分析,PHP程序原本是解釋性程序語言,其執行速度本來就不高,如果在日常開發中不注意編程習慣就很難提高其執行效率,下文從PHP編程和mysql數據效率兩個方面分析哪些提高其執行效率的要點PHP軟體開發中如何提高項目的運行效率
一、PHP提高效率的要點
1、如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近4倍。
2、$row[』id』] 的速度是$row[id]的7倍。
3、echo 比 print 快,並且使用echo的多重參數(譯註:指用逗號而不是句點)代替字元串連接,比如echo $str1,$str2。
4、在執行for循環之前確定最大循環數,不要每循環一次都計算最大值,最好運用foreach代替。
5、注銷那些不用的變數尤其是大數組,以便釋放內存。
6、盡量避免使用__get,__set,__autoload。
7、require_once()代價昂貴。
8、include文件時盡量使用絕對路徑,因為它避免了PHP去include_path里查找文件的速度,解析操作系統路徑所需的時間會更少。
9、如果你想知道腳本開始執行(譯註:即伺服器端收到客戶端請求)的時刻,使用$_SERVER[『REQUEST_TIME』]要好於time()。
10、函數代替正則表達式完成相同功能。
11、str_replace函數比preg_replace函數快,但strtr函數的效率是str_replace函數的四倍。
12、如果一個字元串替換函數,可接受數組或字元作為參數,並且參數長度不太長,那麼可以考慮額外寫一段替換代碼,使得每次傳遞參數是一個字元,而不是只寫一行代碼接受數組作為查詢和替換的參數。
13、使用選擇分支語句(譯註:即switch case)好於使用多個if,else if語句。
14、用@屏蔽錯誤消息的做法非常低效,極其低效。
15、打開apache的mod_deflate模塊,可以提高網頁的瀏覽速度。
16、資料庫連接當使用完畢時應關掉,不要用長連接。
17、錯誤消息代價昂貴。
18、在方法中遞增局部變數,速度是最快的。幾乎與在函數中調用局部變數的速度相當。
19、遞增一個全局變數要比遞增一個局部變數慢2倍。
20、遞增一個對象屬性(如:$this->prop++)要比遞增一個局部變數慢3倍。
二、MYSQL數據提高執行效率的要點
1. 為查詢緩存優化你的查詢
大多數的MySQL伺服器都開啟了查詢緩存。這是提高性最有效的方法之一,而且這是被MySQL的資料庫引擎處理的。當有很多相同的查詢被執行了多次的時候,這些查詢結果會被放到一個緩存中,這樣,後續的相同的查詢就不用操作表而直接訪問緩存結果了。
這里最主要的問題是,對於程序員來說,這個事情是很容易被忽略的。因為,我們某些查詢語句會讓MySQL不使用緩存。請看下面的示例:
// 查詢緩存不開啟 $r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");
// 開啟查詢緩存 $today = date("Y-m-d");
$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");
上面兩條SQL語句的差別就是 CURDATE() ,MySQL的查詢緩存對這個函數不起作用。所以,像 NOW() 和 RAND() 或是其它的諸如此類的SQL函數都不會開啟查詢緩存,因為這些函數的返回是會不定的易變的。所以,你所需要的就是用一個變數來代替MySQL的函數,從而開啟緩存。
2. EXPLAIN 你的 SELECT 查詢
使用 EXPLAIN 關鍵字可以讓你知道MySQL是如何處理你的SQL語句的。這可以幫你分析你的查詢語句或是表結構的性能瓶頸。
EXPLAIN 的查詢結果還會告訴你你的索引主鍵被如何利用的,你的數據表是如何被搜索和排序的……等等,等等。
挑一個你的SELECT語句(推薦挑選那個最復雜的,有多表聯接的),把關鍵字EXPLAIN加到前面。你可以使用phpmyadmin來做這個事。然後,你會看到一張表格。下面的這個示例中,我們忘記加上了group_id索引,並且有表聯接:
18. 越小的列會越快
對於大多數的資料庫引擎來說,硬碟操作可能是最重大的瓶頸。所以,把你的數據變得緊湊會對這種情況非常有幫助,因為這減少了對硬碟的訪問。
參看 MySQL 的文檔 Storage Requirements 查看所有的數據類型。
如果一個表只會有幾列罷了(比如說字典表,配置表),那麼,我們就沒有理由使用 INT 來做主鍵,使用 MEDIUMINT, SMALLINT 或是更小的 TINYINT 會更經濟一些。如果你不需要記錄時間,使用 DATE 要比 DATETIME 好得多。
當然,你也需要留夠足夠的擴展空間,不然,你日後來干這個事,你會死的很難看,參看Slashdot的例子(2009年11月06 日),一個簡單的ALTER TABLE語句花了3個多小時,因為裡面有一千六百萬條數據。
19. 選擇正確的存儲引擎
在 MySQL 中有兩個存儲引擎 MyISAM 和 InnoDB,每個引擎都有利有弊。酷殼以前文章《MySQL: InnoDB 還是 MyISAM?》討論和這個事情。
MyISAM 適合於一些需要大量查詢的應用,但其對於有大量寫操作並不是很好。甚至你只是需要update一個欄位,整個表都會被鎖起來,而別的進程,就算是讀進程都無法操作直到讀操作完成。另外,MyISAM 對於 SELECT COUNT(*) 這類的計算是超快無比的。
InnoDB 的趨勢會是一個非常復雜的存儲引擎,對於一些小的應用,它會比 MyISAM 還慢。他是它支持「行鎖」 ,於是在寫操作比較多的時候,會更優秀。並且,他還支持更多的高級應用,比如:事務。
下面是MySQL的手冊
* target=」_blank」MyISAM Storage Engine
* InnoDB Storage Engine
20. 使用一個對象關系映射器(Object Relational Mapper)
使用 ORM (Object Relational Mapper),你能夠獲得可靠的性能增漲。一個ORM可以做的所有事情,也能被手動的編寫出來。但是,這需要一個高級專家。
ORM 的最重要的是「Lazy Loading」,也就是說,只有在需要的去取值的時候才會去真正的去做。但你也需要小心這種機制的副作用,因為這很有可能會因為要去創建很多很多小的查詢反而會降低性能。
ORM 還可以把你的SQL語句打包成一個事務,這會比單獨執行他們快得多得多。
『貳』 網站採用什麼語言好 最好語言是php么
最好是採用PHP語言。
php是網頁語言,用於嵌入html代碼中,實現較強的邏輯運算功能,是B/S結構的開發語言,用於網頁開發中,盡管其語法與C類似,但是它是解釋執行的,從編譯角度說,是解釋型語言(網頁開發語言都是解釋型的),也就是說,代碼寫好後,放到網頁伺服器上就可以直接運行,不必進行編譯。另外,它也是弱類型編程語言,使用變數時,不必注意變數的數據類型,而且變數使用前不必進行預先定義,可以直接使用。
C/C++是編譯型的語言,用於C/S架構中,源代碼需要編譯後,才能執行,C/C++常用於需要高速處理,高速執行的場合,如:數值計算、圖像處理、單機游戲、網路游戲的客戶端、驅動程序、嵌入式開發、操作系統,現在使用的許多單機和絕大部分的網路程序(主要是客戶端)都是用C/C++編寫的,在高級語言中,C的運行速度是最快的,在面向對象的編程語言中,C++是最快的。C/C++也是強類型語言,變數使用前必須預先定義,從這一點來說,變數的運行效率是高的,但是對於程序員來說,編程的負擔就加重了,不夠智能化,還有,使用變數時,要考慮變數的數據類型,不同類型的變數混合使用時,需要人工轉換,這比較麻煩,也容易犯編程錯誤。
『叄』 怎麼理解【前台PHP,中間件用java,底層用C/C++】
通常來說,做一個中小型網站或Web應用不會用多種服務端語言環境。
根據你所需要的網站需求決定要使用的技術架構。
首先PHP不是WEB前台技術(HTML+CSS+JavaScript才是,PHP與Web前端關系不大,這一點很多人都搞不清楚),PHP也是服務端的,說前台PHP個人感覺描述不當,你可以說表層PHP更准確點。PHP是解釋性語言,語言靈活、約束少、容錯高,即使代碼語法上寫錯了也未必影響整個網站的運行,適合實現低邏輯密度的業務處理。另外PHP的一些成熟框架也是支持插入中間件的。像博客、論壇、門戶網站等適合用PHP實現。
Java是一門比較健壯的語言環境,強類型、半編譯,可在運行時對自身代碼進行認知(反射),Java作為開源熱門,用Java編寫的實用工具如海洋般廣闊,所以利用Struts、Spring等成熟的JavaEE框架可以很方便地將這些工具作為中間層放置到Web應用當中。中間件通常是放置在原始服務端與客戶端之間的一個處理層,可能是個程序,也可能是一個伺服器(電腦),用於對原始數據進行進一步加工、篩選。Java十分適合製作業務邏輯比較復雜,對安全性、正確性與運行效率要求較高的網站或Web服務。像銀行系統、支付平台、在線聊天、網頁游戲等適合Java實現。
C/C++是目前大部分操作系統編寫時所用的語言,所以用C/C++可以很輕易地接觸到操作系統最底層的介面,C/C++很少用於網站或Web服務的開發。另外C/C++的編譯是平台相關的,同時也是平台最優化的,所以在復雜數據結構、演算法的處理能力上相較於其他語言有很大的優勢。像大型網游的伺服器可能由C/C++實現。
『肆』 php跟java有什麼區別
PHP和Java是兩種完全不同的編程語言,它們有以下幾個區別:
語法和編程範式:PHP是一種腳本語言,其語法類似於C語言,主要用於Web開發。而Java是一種面向對象的編程語言,其語法類似於C++,主悶乎譽要用於構建大型應用程序和服務端開發。PHP是一種解頃悄釋性語言,而Java則是一螞段種編譯型語言。
執行效率:由於PHP是解釋型語言,它的執行速度比Java慢。而Java則是編譯型語言,它的執行速度比PHP快。
應用場景:PHP主要用於Web開發,如網站開發、動態網頁製作等。而Java則被廣泛應用於構建大型應用程序和服務端開發,如企業應用、桌面應用、移動應用等。
社區和生態環境:PHP擁有龐大的開發者社區和豐富的開源項目,如WordPress、Drupal等。而Java則擁有完善的開發工具、框架和中間件,如Spring、Hibernate、Tomcat等。
學習門檻和學習曲線:由於PHP語法簡單、易於學習,所以初學者能夠較快地上手。而Java則比較復雜,需要掌握更多的知識和技能,學習曲線較為陡峭。
總的來說,PHP和Java是針對不同應用場景和需求的編程語言,開發者應根據實際需求來選擇適合自己的編程語言。