国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

php多人開發環境原理解析

young.li / 3259人閱讀

摘要:由于是并行開發,肯定存在好幾個功能同時驗收或者測試的情況,這個時候預發環境到底部署誰的代碼呢切換到的分支,就不能驗收了。所以希望存在一個多人開發環境,每個人的開發流程互不影響。運行原理首先我們來分析下的運行原理,看看的語言特點。

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

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

PHP運行原理

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

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 或者其他結果給 NginxNginx 再返回給瀏覽器。流程如下圖:

CGI:是 NginxPHP_FPM 之間數據交換的一種協議。

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

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

PHP-FPM:是 PHPNginx 提供的 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_whowulv,然后在 Nginx 獲取。

拓展

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

本文首發于我的個人博客:https://wulv.site/2017-11-05/...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39703.html

相關文章

  • php多人開發環境原理解析

    摘要:由于是并行開發,肯定存在好幾個功能同時驗收或者測試的情況,這個時候預發環境到底部署誰的代碼呢切換到的分支,就不能驗收了。所以希望存在一個多人開發環境,每個人的開發流程互不影響。運行原理首先我們來分析下的運行原理,看看的語言特點。 PHP 作為世界上最好的語言,在web里占據著大概80%的份額,中小公司基本都說 lnmp 架構。當一個倉庫開發人員大于1,20人的時候,每個人可能開發不同的...

    Jinkey 評論0 收藏0
  • 前端學習資源

    摘要:提供了完整的環境,并且支持自定義域名指向,動態計算資源調整,可以完成各種應用的開發編譯與部署。 react 新特性 react16 Context 算法相關 圖解排序算法(二)之希爾排序 微信小程序 微信小程序組件化的解決方案移動端尺寸基本知識 瀏覽器 前端必讀:瀏覽器內部工作原理瀏覽器緩存原理解讀瀏覽器加載css和js及dom解析之間的關系瀏覽器緩存 CSS學習 移動web開發布局入...

    zhisheng 評論0 收藏0
  • 高級PHP工程師應該具備的一些技能

    摘要:很多面試,很多人員能力要求都有高級工程師的字眼,如果您真心喜歡,并且您剛起步,那么我簡單說說一個高級工程師所應該具備的,希望給初級或已經達到中級的工程師一些幫助。程序的執行順序問題。 初次接觸PHP,就為其美所折服,于是一發不可收拾。 很多面試,很多人員能力要求都有PHP高級工程師的字眼,如果您真心喜歡PHP,并且您剛起步,那么我簡單說說一個PHP高級工程師所應該具備的,希望給初級或已...

    Lsnsh 評論0 收藏0
  • 使用Nginx反向代理和負載均衡搭建多人測試環境

    摘要:反向代理和負載均衡通過判斷不同的,我們可以通過反向代理轉發到不同的機器和端口,這里同一臺測試機可以轉發到本機的不同的端口,監聽不同的端口設置不同的網站目錄。 showImg(https://segmentfault.com/img/bVG4E4?w=1328&h=874); 假如我們使用 git 進行版本控制,在一個大型網站中,開發人員在不同的分支上開發不同的需求,當一個需求開發完成需...

    DDreach 評論0 收藏0

發表評論

0條評論

young.li

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<