久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP多人模塊開發原理解析

本篇文章給大家詳細解釋了PHP多人開發的原理以及需要注意的地方,一起參考學習下吧。

作為世界上最“好”的語言,在web里占據著大概80%的份額,中小公司基本都說 lnmp 架構。當一個倉庫開發人員大于1,20人的時候,每個人可能開發不同的模塊和功能,用代碼版本控制工具比如 git 開不同的分支,流程大概是先在本地搭一套完整的環境,開發好部署在測試環境,自測或者測試人員測試好之后部署在預發布環境,預發布基本和線上環境一樣,然后給產品驗收,驗收完成后再發布上線。

由于是并行開發,肯定存在好幾個功能同時驗收或者測試的情況,這個時候預發環境到底部署誰的代碼呢?切換到A的分支,B就不能驗收了。所以希望存在一個多人開發環境,每個人的開發流程互不影響。

PHP運行原理

首先我們來分析下 PHP 的運行原理,看看 PHP 的語言特點。當我們從瀏覽器發起一個請求,我們的web服務器(Nginx、Apache等)監聽了80或者443端口,我們來看一個最簡單的 Nginx 的 vhost 配置:

server {
 listen    80;
 server_name test.com;
 
 root /data/gateway/html;
 index  index.php;

 location ~ \.php$ {
  fastcgi_pass  127.0.0.1:9001; #unix:/Users/run/php-fcgi.sock;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include    fastcgi_params;
 }
}

Nginx 監聽80端口,當匹配到用戶訪問的域名是test.com后使用對應的 vhost 配置。在服務器里PHP-FPM起一個服務,監聽一個端口(比如9001)或者一個unix socket,Nginx通過fastcgi_pass配置,將請求傳遞給 PHP-FPM 來解析PHP代碼,PHP解析器每次從index.php開始解析,一路處理下去、做一系列的邏輯處理、查詢數據庫或者緩存等操作,返回一個 HTML 或者其他結果給 Nginx,Nginx 再返回給瀏覽器。流程如下圖:

PHP多人模塊開發原理解析

CGI:是 Nginx 與 PHP_FPM 之間數據交換的一種協議。

FastCGI:同 CGI,是一種通信協議,但比 CGI 在效率上做了一些優化。

PHP-CGI:是 PHP 對 Nginx 提供的 CGI 協議的接口程序。

PHP-FPM:是 PHP 對 Nginx 提供的 FastCGI 協議的接口程序,額外還提供了相對智能一些任務管理。

多人開發環境

從 PHP 原理我們可以看到,PHP其實只是一個解釋型的腳本語言,每次請求都要從index.php解析一次,那我們是不是可以在服務器根據不同開發者的名字,命名很多個文件夾,在各自文件夾里,clone 好代碼倉庫,切換到自己的分支。再讓 Nginx 處理每個人目錄下的index就可以了。比如直接訪問http://wulv.test.com/,在 Nginx 獲取到 wulv,把 root 設置到 wulv 這個目錄,這樣就訪問到 wulv 這個目錄下的代碼了。可以讓 Nginx 這樣設置:

set $who www;
if ($http_who != "") {
  set $who $http_who;
}
root /data/gateway/$who/html;

我們可以讓 URL 里攜帶用戶的目錄,在 Nginx 截取下來,可以在一下幾個地方攜帶:

host: http://wulv.test.com

path: http://www.test.com/wulv

query: http://www.test.com?http_who=wulv

這樣大體上可以實現需求了,但還是有點問題,比如頁面里有些鏈接是寫死的,沒有使用相對路徑,你一點擊就又跑 www.test.com 去了,或者有些第三方應用比如 OAuth 等需要校驗域名,你和線上域名不一致根本無法登陸。所以需要其他方式來實現,比如:

http request header

cookie

我們可以使用Modify Headers這個瀏覽器插件,修改http request 頭信息,設置一個參數 http_who 為 wulv,然后在 Nginx 獲取。

拓展

如果有條件的話,其實還可以做一個網關服務器,做一個配置頁面,在配置頁面里配置一下需要訪問的目錄,下次訪問,網關就直接幫你設置http header,代理到對應服務器。這樣連瀏覽器插件都不需要裝了,對運營和產品設計更加友好。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結合實例形式分析了php實現針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現的多維數組排序算法,結合實例形式對比分析了php針對多維數組及帶有鍵名的多維數組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結合ajaxuploadfile實現無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 农村妇女毛片精品久久久 | 91久久精品国产 | 欧美日韩视频 | 在线观看精品 | 国产91丝袜在线播放 | 亚洲欧美一区二区三区视频 | 国产精品网址 | 久久天堂| 欧美性一区二区三区 | 午夜男人的天堂 | 精品久久久久久久久久久久久久 | 一区二区手机在线 | 毛片站 | 鲁视频 | 国产成人精品免费视频大全最热 | 久久精品国产一区二区三区不卡 | 天天插天天干 | 欧美精品欧美精品系列 | 国产91一区二区三区 | 亚洲 欧美 另类 综合 偷拍 | 国产片侵犯亲女视频播放 | 国产一区二区久久 | 黄色av一区| 天天操人人干 | 亚洲精品小视频在线观看 | 美女逼网站 | 亚洲一区二区三区久久 | 久青草影院 | 一区二区在线免费观看 | 日本不卡在线观看 | av在线免费网站 | 国产精品毛片 | 黄色一级大片在线免费看产 | 毛片一级片 | 午夜小视频在线播放 | 99热视| 久久精品一区 | 色综合久久天天综合网 | av香蕉 | 97国产精品 | 特黄特色大片免费视频观看 |