這篇文章主要介紹“PHP的運(yùn)行和多人開發(fā)環(huán)境原理”,在日常操作中,相信很多人在PHP的運(yùn)行和多人開發(fā)環(huán)境原理問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”PHP的運(yùn)行和多人開發(fā)環(huán)境原理”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)專注于興山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供興山營(yíng)銷型網(wǎng)站建設(shè),興山網(wǎng)站制作、興山網(wǎng)頁(yè)設(shè)計(jì)、興山網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造興山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供興山網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。PHP運(yùn)行原理
首先我們來(lái)分析下 PHP 的運(yùn)行原理,看看 PHP 的語(yǔ)言特點(diǎn)。當(dāng)我們從瀏覽器發(fā)起一個(gè)請(qǐng)求,我們的web服務(wù)器(Nginx、Apache等)監(jiān)聽了80或者443端口,我們來(lái)看一個(gè)最簡(jiǎn)單的 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 監(jiān)聽80端口,當(dāng)匹配到用戶訪問的域名是test.com后使用對(duì)應(yīng)的 vhost 配置。在服務(wù)器里PHP-FPM起一個(gè)服務(wù),監(jiān)聽一個(gè)端口(比如9001)或者一個(gè)unix socket,Nginx通過fastcgi_pass配置,將請(qǐng)求傳遞給 PHP-FPM 來(lái)解析PHP代碼,PHP解析器每次從index.php開始解析,一路處理下去、做一系列的邏輯處理、查詢數(shù)據(jù)庫(kù)或者緩存等操作,返回一個(gè) HTML 或者其他結(jié)果給 Nginx,Nginx 再返回給瀏覽器。流程如下圖:
CGI:是 Nginx 與 PHP_FPM 之間數(shù)據(jù)交換的一種協(xié)議。
FastCGI:同 CGI,是一種通信協(xié)議,但比 CGI 在效率上做了一些優(yōu)化。
PHP-CGI:是 PHP 對(duì) Nginx 提供的 CGI 協(xié)議的接口程序。
PHP-FPM:是 PHP 對(duì) Nginx 提供的 FastCGI 協(xié)議的接口程序,額外還提供了相對(duì)智能一些任務(wù)管理。
多人開發(fā)環(huán)境
從 PHP 原理我們可以看到,PHP其實(shí)只是一個(gè)解釋型的腳本語(yǔ)言,每次請(qǐng)求都要從index.php解析一次,那我們是不是可以在服務(wù)器根據(jù)不同開發(fā)者的名字,命名很多個(gè)文件夾,在各自文件夾里,clone 好代碼倉(cāng)庫(kù),切換到自己的分支。再讓 Nginx 處理每個(gè)人目錄下的index就可以了。比如直接訪問http://wulv.test.com/,在 Nginx 獲取到 wulv,把 root 設(shè)置到 wulv 這個(gè)目錄,這樣就訪問到 wulv 這個(gè)目錄下的代碼了。可以讓 Nginx 這樣設(shè)置:
set $who www; if ($http_who != "") { set $who $http_who; } root /data/gateway/$who/html;
我們可以讓 URL 里攜帶用戶的目錄,在 Nginx 截取下來(lái),可以在一下幾個(gè)地方攜帶:
host: http://wulv.test.com
path: http://www.test.com/wulv
query: http://www.test.com?http_who=wulv
這樣大體上可以實(shí)現(xiàn)需求了,但還是有點(diǎn)問題,比如頁(yè)面里有些鏈接是寫死的,沒有使用相對(duì)路徑,你一點(diǎn)擊就又跑 www.test.com 去了,或者有些第三方應(yīng)用比如 OAuth 等需要校驗(yàn)域名,你和線上域名不一致根本無(wú)法登陸。所以需要其他方式來(lái)實(shí)現(xiàn),比如:
http request header
cookie
我們可以使用Modify Headers這個(gè)瀏覽器插件,修改http request 頭信息,設(shè)置一個(gè)參數(shù) http_who 為 wulv,然后在 Nginx 獲取。
到此,關(guān)于“PHP的運(yùn)行和多人開發(fā)環(huán)境原理”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
本文名稱:PHP的運(yùn)行和多人開發(fā)環(huán)境原理-創(chuàng)新互聯(lián)
URL鏈接:http://m.newbst.com/article32/dsoepc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站營(yíng)銷、自適應(yīng)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)頁(yè)設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)