程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 精通php的十大要點(上)

精通php的十大要點(上)

編輯:關於PHP編程

1. 在合適的時候使用PHP - Rasmus Lerdorf
沒有誰比PHP的創建者Rasmus Lerdorf明白PHP用在什麼地方是更合理的, 他於1995年發布了PHP這門語言,從那時起,PHP就像燎原之火,燒遍了整個開發陣營,改變了互聯網的世界。 可是, Rasmus並不是因此而創建PHP的PHP是為了解決web開發者的實際問題而誕生的。

和許多開源項目一樣,PHP變得流行,流行的動機並不能用正常的哲學來進行解釋,甚至流行得有些孤芳自賞。它完全可以作為一個案例,一個解決各種web問題的工具需求所引起的案例,因此當PHP剛出現的時候,這種工具需求全部聚焦到PHP的身上。

 

但是,你不能奢望PHP可以解決所有問題。Lerdorf是第一個承認PHP只是一種工具的人,並且PHP也有很多力所不能及的情況。

根據工作的不同來選擇合適的工具。我跑了很多家公司,為了說服他們部署和使用PHP,但是這並不意味著PHP對所有問題都適用。它只是可以一個解決大部分問題的front-end腳步語言。

作為一個web開發者,嘗試用PHP解決所有問題是不科學的,同時也會浪費你的時間。當PHP玩不轉的時候,不要猶豫,試用一下其他的語言吧。

2. 使用多表存儲提高規模伸縮性 - Matt Mullenweg

沒有人願意質疑Matt Mullenweg在PHP方面的權威性,他開發了這個星球上最流行的blog系統,(依靠一個強大的社區力量支持): Wordpress. 創建Wordpress以後,Matt和他的團隊啟動了Wordpress.com平台,一個基於Wordpress MU的免費blog站點。現在,Wordpress.com已經擁有大約400萬用戶, 這些用戶每天提供超過 140,000篇的日志。 (要查看更多Wordpress.com的統計情況,請點擊這裡.)

如果有人知道如何讓網站的規模伸縮自如,這個人一定是Matt Mullenweg。2006年的時候 Matt對Wordpress的數據結構進行了前瞻性的改進,並且解釋了為什麼Wordpress MU對每個blog使用獨立的MYSQL表格, 而不是把所有的blog數據都塞進一個巨大的表格。

我們測試過這個方法,但是發現如果要擴展它的伸縮性,代價太高。如果用一個整體的數據結構,在大流量面前,你將會面臨服務器硬件的問題。在MU裡面。用戶們都被分布到獨立的表格當中,並且可以輕易地組織起來。舉個例子,WordPress.com把用戶的數據分散存儲到4096個數據庫中,這些數據庫可以分散大規模的數據訪問,實現流量和壓力分流。

數據表的可遷移性讓代碼(blog)可以運行得更快,並且讓系統具備更強的伸縮性。依靠強大的緩存策略和靈活的數據庫運用策略, Matt向人們展示了時下最流行的Facebook和Wordpress.com都可以在PHP下穩定運行,並且處理驚人的訪問量。

3. 千萬不要相信用戶 - Dave Child

Dave Child是 Added Bytes (previously ilovejackdaniels.com) 網站的核心人物,這個網站以他出色的《cheat sheets for many programming languages》而聞名。 Dave為很多英國的公司服務,並且已經在編程世界裡樹立起相當的權威。

Dave為PHP開發者提供了很多深謀遠慮的建議,並總結成了《writing secure code in PHP》:千萬不要相信你的用戶,他們甚至可能會傷害你。

有一條web開發的基本原則,我重復多少遍都覺得不夠,那就是:千萬不要相信你的用戶,同時要假設你網站中的每個數據單元都是從用戶那裡收集來的惡意代碼。很多時候,你必須用javascript在客戶端檢驗表單提交過來的內容, 如果你習慣了如此,那麼,這是一個好習慣。如果安全性對你來說很重要,這就是最重要最需要學習的原則。

Dave目前正致力於為它的《Writing Secure PHP》系列書籍整理實例,書的最後他說:

最後,變得偏執一點吧。除非你認為你的站點永遠不會受到攻擊,否則就正視所有的問題,當問題真正發生的時候,你的情況會變得很糟。你需要把每個用戶都看成會帶來一場攻防站的黑客,想盡一切辦法來保護站點的安全,同時想好相應問題的解決方案。

4. 多使用PHP緩存 - Ben Balbo

Ben Balbo開發了Site Point,一個為developers和designers提供指導的網站。他是墨爾本PHP開發和開源俱樂部的成員, 因此他對PHP有一定的了解,同時對PHP caching有一定的想法和經驗。

如果你擁有一個訪問量很大,但更新並不頻繁的站點(比如blog,基於某種CMS),或許它需要進行一些改造,這些改造不會花費太多的時間,但是對性能有突出的貢獻。 如果要為一個復雜/更新頻率很快的站點建立緩存機制,過程可能會很曲折,但是好處也是顯而易見的。

PHP緩存技術有很多種,Ben為我們推薦了如下一些:

緩存函數的運行結果
設置過期時間
緩存IE下載的文件
模板緩存技術
Cache_Lite

由於PHP作為動態語言的特性,緩存機制對於更新頻率並不快的站點來說非常重要。

5. 使用IDE, Templates和Snippets加速PHP開發 - Chad Kieffer

當Chad Kieffer從UI設計和數據庫優化的工作中抽身出來的時候,他會在他的博客2 tablespoons上分享很多技術經驗。由於Chad多方面的全面發展,他經常可以發現其他程序員不能發現的問題,並形成相關經驗,尤其是他開發網站的方法。他參與了網站開發的各個環節,因此他的建議對於提高網站開發的大局觀非常有用。

Chad認為使用Eclipse PDT
(Eclipse's PHP development package) 這樣的IDE,同時使用一些模板技術和開源項目可以有效地提高PHP的開發速度。

緊湊的計劃,長長的to do lists以及deadlines讓開發人員非常苦悶。不過有些功能,比如Eclipse Templates,可以有效減少編碼的時間和出錯的幾率。

通常來說,任何項目都可以自動化,自動化程度越高, 你完成項目的時間就越短。花時間來開發使用頻率很高的框架和模板,將會節省你以後更多時間。同時,使用像Eclipse and the PDT package這樣的IDE,你會發現效率得到明顯提高,IDE可以自動閉合,補全分號並且可以在本地debug。

Related posts:

  1. wordpress成功升級到2.3.2 雖然tag對我來說沒什麼用,但是著眼於安全性,我還是升級了,從兩年前的2.0.5升級到現在的2.3.2,著實需要一份勇氣和決心,幸好在本地跑升級的時候沒有出現任何問題,只是模板上的功能需要一些簡單的修改。 線上的升級一切順利,很多人會納悶,你剛才不是還發post求助升級辦法麼? 嗯,我已經找到了最好的工具,WordPress Automatic Upgrade plugin 這款wordpress的自動升級插件真正讓你升級無憂,因為它會在升級之前為你備份所有的文件和數據,用起來也是“一路next”型,相信很適合那些不想為升級煩心的blogger們,不過有個問題,升級以後的export功能出現問題,提示找不到wp-config.php,不知道是普遍有此問題還是我blog的問題,遇到同樣問題的朋友請給我留言,我來研究一下解決辦法。(經過研究發現,原來是coolcode插件中訪問路徑的問題,只要取消此插件的激活,Export功能就可以正常使用了) ...
  2. 誰有從Wordpress2.0升級的經歷 今天下載了wordpress-2.3.2,本來想升級,但是發現版本跨越不小,數據結構變化貌似不小,升級比較麻煩,風險太大,所以暫時放棄,哪位朋友有從wordpress2.0升到2.3的經驗,分享一下吧,感激不盡。 ...
  3. 翻譯:《14個絕佳的站長工具》(下) 原文:http://www.conversion-rate-experts.com/articles/understanding-your-visitors/ 此文是由Andrew(http://www.achome.cn)自主翻譯的,如需轉載請注明出處。 用戶是最好的宣傳和銷售人員,來聽聽他們是如何宣傳的吧,Tell-a-Friend King—立即體驗! 你是否擁有一個用戶推薦的系統?一個可以讓用戶發信邀請朋友的系統。我們可以看到, 這些用戶發的信裡面包含“為什麼用戶在您的網站上消費”這個問題的答案。很多人花費大量的時間來進行自我定位和制定吸引人的廣告詞,但通過用戶的推薦信,你就可以找到用戶為什麼青睐你的原因。 輕松收集用戶反饋, Kampyle—立即體驗! Kampyle可以讓用戶在你的網站上提交用戶反饋(通過頁面底部的一個小button),點擊以後會彈出一個窗口讓用戶填寫他們的意見和建議。 站長們可以登錄Kampyle的官網去查看和管理收集到的用戶反饋,如果用戶留下了email地址,站長們還可以輕易地通知用戶,他們已經收到反饋並將進行相應的改進。...

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved