PHP企業(yè)應(yīng)用開發(fā)最佳實踐_第1頁
PHP企業(yè)應(yīng)用開發(fā)最佳實踐_第2頁
PHP企業(yè)應(yīng)用開發(fā)最佳實踐_第3頁
PHP企業(yè)應(yīng)用開發(fā)最佳實踐_第4頁
PHP企業(yè)應(yīng)用開發(fā)最佳實踐_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、標題1PHP企業(yè)應(yīng)用開發(fā)最佳實踐背景主要方向是企業(yè)管理軟件。以私有部署為主要方式。終端環(huán)境千變?nèi)f化:操作系統(tǒng),WebServer,PHP版本。遇到了大量的問題,歸納為十個問題,供大家參考。核心是盡量做到最小依賴,最簡安裝,最簡維護。目錄如何選擇PHP的開發(fā)框架?如何保護自己的代碼?如何解決PHP環(huán)境部署的問題?如何解決用戶二次開發(fā)無法升級的問題?如何實現(xiàn)全文檢索的問題?如何實現(xiàn)計劃任務(wù)的問題?怎么導(dǎo)入導(dǎo)出word, excel?如何實現(xiàn)輕量級的聊天服務(wù)器?如何實現(xiàn)常見的消息通知?如何應(yīng)對常見的安全問題?問題一:如何選擇開發(fā)框架PHP框架多如牛毛,選擇困難。09年的時候,研究過cakephp,

2、ci等框架。最后還是自己來寫:zentaoPHP。第三方框架的問題:通用框架,方向難以控制。主要特點:結(jié)構(gòu)簡單,開發(fā)友好,深度擴展。不管是自主開發(fā)還是第三方,一定要能掌控代碼。比如很多框架新版本無法兼容老版本的應(yīng)用:(。程序員一定要控制代碼,而不是被代碼控制。問題二:如何保護自己的代碼商務(wù)手段:保護代碼的最好方式是開源。通過開源開放建立競爭壁壘。技術(shù)手段:安全防護:內(nèi)網(wǎng)的安全,限制訪問。加密軟件:ioncube, zend。前端保護:用PHP輸出,代碼混淆,簽名,彩蛋(bmpcrypt)。法律手段:對內(nèi):保密協(xié)議,版權(quán)意識普及。對外:商標,著作權(quán)登記,數(shù)字作品登記,外觀發(fā)明專利,律師函,訴訟。

3、問題三:如何解決應(yīng)用部署的問題最開始不認為部署是問題,總覺得PHP程序員能搞定。(x)先后嘗試了各種集成運行環(huán)境,到后來自己精簡,編譯。windows一鍵安裝包linux一鍵安裝包(各種依賴lib全內(nèi)置,盡量減少第三方依賴。)各種deb包,rpm包。docker鏡像。虛擬機鏡像。盡可能簡化用戶安裝這一關(guān)。問題四:如何解決二次開發(fā)和升級的矛盾做二次開發(fā)的用戶是最有價值的用戶,但他們無法升級。這個問題要從一開始就要考慮,也是我們自己開發(fā)框架的原因。每個模塊分為model, view, control, lang, config充分利用PHP的解釋執(zhí)行的特點,加上OOP的機制。主干代碼和擴展代碼分開

4、。框架判斷擴展目錄下面是否有擴展代碼,有則優(yōu)先加載。無法使用OOP的,使用鉤子機制,加上js, css實現(xiàn)動態(tài)的修改。我們現(xiàn)在無分支:一套主干代碼 + 若干插件。問題五:如何實現(xiàn)全文檢索的問題無法使用第三方全文引擎軟件:部署成本太高,有局限。只能著眼于mysql的fulltext功能。不做分詞,做單字索引。適用于小規(guī)模的全文檢索,實際使用效果還不錯。基本步驟:將內(nèi)容拼裝,轉(zhuǎn)換為unicode值,存為一張索引表。在轉(zhuǎn)換過程中,將漢字和unicode的對應(yīng)關(guān)系記錄下來。搜索時候同樣做unicode的轉(zhuǎn)換,然后對索引表進行檢索。將結(jié)果中的unicode還原為原來的內(nèi)容,給用戶呈現(xiàn)搜索結(jié)果。對四個字符

5、以下的英文單詞填充特殊字符,這樣也能搜索。問題六:如何實現(xiàn)計劃任務(wù)操作系統(tǒng)自帶的crontab, 計劃任務(wù)用戶部署起來有成本。使用PHP的ignore_user_abort機制。通過用戶的訪問來觸發(fā),啟動一個計劃任務(wù)的進程,常駐。然后仿照crontab的語法,實現(xiàn)了PHP版本的crontab。用戶可以在后臺自主添加計劃任務(wù)。常駐內(nèi)存的調(diào)度程序定期掃描計劃任務(wù)表,決定是否執(zhí)行。問題:webserver重啟后,需要用戶手工觸發(fā)。問題七:和其他數(shù)據(jù)格式的交換word, exce格式的導(dǎo)入導(dǎo)出是常見需求??梢越柚_源的類庫:phpexcel, phpword。還有一種思路:將docx, xslx當作模

6、板。和其他應(yīng)用的集成,采用接口的方式:/my-bugs.html/my-bugs.json無需額外開發(fā)大量接口,盡量做到代碼重用。問題八:如何實現(xiàn)輕量級的IM服務(wù)定位是輕量級的IM服務(wù)。服務(wù)器端使用PHP + socket,跨平臺部署,最小依賴。客戶端使用nw.js,html5的方案。協(xié)議沒有使用websocket,在socket基礎(chǔ)上自己封裝。業(yè)務(wù)邏輯按照正常的B/S架構(gòu)開發(fā),mvc結(jié)構(gòu)。文字消息使用socket傳輸,附件使用http協(xié)議。服務(wù)器端啟動一個PHP腳本即可。問題九:如何使用消息通知郵件通知還是最常用的方式。問題一:終端用戶對smtp服務(wù)不了解。問題二:各大郵件服務(wù)商對smtp服務(wù)限制越來越嚴格。應(yīng)對方案:在配置的時候簡化用戶的配置。換個角度來看:和sendcloud同學(xué)建議,促成了notice服務(wù)。在嘗試由我們來提供通知服務(wù),摸索中。體會:技術(shù)無法解決的問題嘗試用商務(wù)來解決。問題十:如何應(yīng)對常見的安全問題一開始并沒有太在意,烏云上爆了十幾個問題。核心就是對用戶的輸入做過濾:XSS攻擊:對輸入做標準化,過濾。HTML PurifierSQL注入: 接管SQL的拼裝

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論