宝哥软件园

PHP多人模块开发原理分析

编辑:宝哥软件园 来源:互联网 时间:2021-09-02

作为世界上最“好”的语言,它占据了大约80%的web,中小型公司基本上都在谈论lnmp架构。当一个仓库中有120多个开发人员时,每个人都可能开发不同的模块和功能,并使用git等代码版本控制工具来打开不同的分支。这个过程可能是在本地建立一个完整的环境,在测试环境中开发和部署它,并在自测或测试人员测试之后在预发布环境中部署它。预发布基本和线上环境一样,然后产品接受,然后发布上线。

因为是并行开发,所以必须同时接受或测试几个功能。此时预览环境中部署了谁的代码?切换到A的分支,B将不被接受。所以希望有一个多人发展的环境,每个人的发展过程不会互相影响。

PHP的工作原理

首先,我们来分析一下PHP的工作原理,看看PHP的语言特点。当我们从浏览器、我们的网络服务器(Nginx、Apache等)发起请求时。)监听端口80或443。让我们看看Nginx最简单的vhost配置:

服务器{ listen 80服务器名test.com;根/数据/网关/html;index.php指数;位置~ 。PHP $ { fastcgi _ pass 127 . 0 . 0 . 1:9001;# UNIX :/Users/run/PHP-fcgi . sock;index.php指数;fastcgi _ param SCRIPT _ FILENAME $ document _ root $ fastcgi _ SCRIPT _ name;包括fastcgi _ params}}Nginx监控端口80,匹配用户访问的域名为test.com后,使用对应的vhost配置。在服务器中,PHP-FPM启动一个服务并监听一个端口(如9001)或一个unix套接字。Nginx由fastcgi_pass配置,并将请求传递给PHP-FPM解析PHP代码。PHP解析器每次都从index.php开始解析,一路处理,做一系列逻辑处理,查询数据库或者缓存等等。并向Nginx返回一个HTML或其他结果,然后Nginx返回。

CGI:是Nginx和PHP_FPM之间数据交换的协议。

FastCGI:和CGI一样,是一个通信协议,但是相比CGI在效率上做了优化。

PHP-CGI:是PHP提供给Nginx的CGI协议的接口程序。

PHP-FPM:是PHP提供给Nginx的FastCGI协议的接口程序,也提供了一些相对智能的任务管理。

多人开发环境

从PHP的原理中,我们可以看到PHP只是一种解释性的脚本语言,每个请求都必须从index.php解析出来。我们可以根据不同开发者的名字在服务器上命名很多文件夹,克隆每个文件夹中的代码仓库,切换到自己的分支吗?让Nginx处理每个人目录下的索引。比如直接访问http://wulv.test.com/,在Nginx中获取wulv,在wulv的目录下设置根目录,然后访问wulv目录下的代码。您可以按如下方式设置Nginx:

设置$ who wwwif ($http_who!=' '){ set $ who $ http _ who;} root/data/gateway/$ who/html;我们可以让URL携带用户的目录,在Nginx中截取,并在以下地方携带:

http://wulv.test.com :号主机

http://www.test.com/wulv路:号

http://www.test.com :号查询?http_who=wulv

这个基本可以满足要求,但是还是存在一些问题。比如页面中有些链接写死了,没有使用相对路径,然后一点击就去了www.test.com,或者OAuth等一些第三方应用需要验证域名,因为和网上域名不一致而无法登录。因此,需要其他方式,例如:

http请求头

甜饼干

我们可以使用浏览器插件Modify Headers修改http请求头信息,设置一个参数http_who为wulv,然后在Nginx中获取。

发展

如果你有条件,你实际上可以做一个网关服务器,做一个配置页面,在配置页面配置你需要访问的目录。网关将直接为您设置http头,以便您下次访问时代理到相应的服务器。这样就不需要安装浏览器插件,对操作和产品设计更友好。

更多资讯
游戏推荐
更多+