要想代碼寫的好,前提配置作的好php
error_reporting = E_ALL | E_STRICT前端
display_errors = 測試機設置爲 On,生產機設置爲 Offmysql
display_startup_errors = On程序員
log_errors = Onweb
error_log = /home/logs/phperror.logsql
寫代碼的時候要時刻注意的問題數據庫
一、變量必需要初始化,函數或者類的方法的參數要有類型定義;服務器
二、能用 ===、!== 就不用 == 和 != ;框架
三、對外來變量要作防衛式檢查;函數
四、不要只考慮正常邏輯,多考慮邊界狀況;
五、涉及 SQL 以及文件操做要想象各類可能性,儘可能在框架級別作好約束,不要依賴開發人員的能力;
六、要讓好的習慣成爲你的本能!
一些經驗
一、單入口;
入口對一些容易出問題的事情進行檢查和初始化,讓程序員能夠把精力集中在應用層。
好比服務器時間出錯檢查,路徑初始化,GET、POST、FILES 、SERVER 等全局變量的初始化,等等。
二、用類封裝代碼;
三、作好 Autoload,善用 NameSpace;
四、接管異常處理,在代碼裏儘可能拋異常;
五、儘可能使用原生和 PECL 擴展函數;
六、代碼裏慎用 @ 符;
七、爲對 CDN 更友善,框架默認輸出 no-cache 頭,須要時再改變,並儘可能把動態請求和靜態資源分開;
八、若是有文件上傳功能,能夠在入口處這樣處理而不須要程序員來操心刪掉臨時文件:
register_shutdown_function(
‘removeFILESOnShutdown’
);
九、在容許的狀況下,升級到更高 PHP 版本;
十、經過 Xdebug 調試,使用 XHProf 瞭解性能問題並改進;
十一、APC、OpCache、Memcached 還用我說嗎?可是在此之上最好再作一層封裝,方便之後遷移和調試;
十二、多作 Code Review,三個月後再看本身的代碼;
1三、框架和底層代碼必定要經得起最嚴格的考驗;
1四、必定要在最嚴格的方式下開發與測試,最好有獨立的測試機;
1五、下降將來的維護成本,編碼規範與代碼規範,要嚴格執行,前者能夠用 PHP_CodeSniffer 在提交到代碼倉庫時檢查;
1六、服務分層,圖像處理等耗時操做,不要和 web 服務混在一塊兒。一個小技巧,一些無須用戶關心的操做,好比記錄用戶信息,能夠集中放到程序最後使用 fastcgi_finish_request() 方法在斷開用戶鏈接後執行。
1七、MySQL 數據庫的運行狀態可用 mysqltuner.pl 和 tuning-primer.sh 來檢查;
1八、服務器以及服務的運行狀態,要有及時的監控和報警,沒精力,能夠用監控寶。
咱們本身,走的更遠
一、框架會 unset 掉 GET、POST、COOKIE 等相關數據,對一些外來數據作初始化,好比 GET 操做下,FILES 變量會被清空,必須經過咱們本身封裝的方法進行外來數據的獲取;
二、咱們針對前端 HTML 代碼,分割靜態資源並做自動優化,無須人工干預;
三、文件儲存實現了統一化,自動去重,這樣對開發用戶上傳內容型的應用很是方便,並且一點都不用擔憂被上傳注入;
四、咱們有專門的任務處理服務,經過 FastCGI 協議與前端進行通訊,省掉 HTTP 層的開銷;
五、不只 Web 是單一入口,任務處理、命令行和計劃任務都作了單一入口。