【PHP面试题】您是否使用过版本控制软件?如果有,您用的版本控制软件的名字是什么?


一、考点

1、版本控制软件

版本控制工具一共有两种:集中式分布式

集中式:中间有一个中央的服务器,所有的客户机都会将我们的版本信息上传到中央服务器(即版本信息只保存在中央 服务器中),当我们去上传或者下载的时候,都是从中央服务器来进行连接的(即在此过程中,一旦中央服务器 挂掉,客户机可能就没有办法去上传和下载版本库中的内容),而且客户机是需要连接网络才可以完成上传和下载。【CVS和SVN】

分布式:没有中央服务器,一个版本控制器下的所有客户机都拥有一套完整的版本库信息。这一点与集中式不一样,集中式只是在中央服务器中存储版本库信息。因此,对于分布式来说,容灾性更好,而且不用去连接网络【Git】

2、 延伸

1) PHP的运行原理

典型题:Nginx + PHP - FPM 的运行原理

  • CGI:本身早期的一些 Web Server 只能处理简单的 HTML静态文件,但是随着技术的发展,出现了动态语言(如PHP,Python)。在这当中,如果我们要去处理 PHP 得交给PHP解析器来处理,但是PHP处理完毕后,又怎么跟我们的 Web Server 来进行通信呢?这是一个问题。为了解决不同的语言处理器 与 Web Server 的通信,出现了 CGI协议,只要按照 CGI协议 去编写程序,就能够实现语言解析器 与 Web Server 的通信。(如:PHP的CGI程序) 在此过程中,CGI就是PHP解析器 和 Web Server 当中的一个协议桥梁
  • FastCGI:CGI虽然解决了PHP与 Web Server 通信的问题,但是它的效率很低,因为 Web Server 每收到一个请求,都会新开一个 CGI进程,然后请求结束的时候,再终止掉这个进程,这个时候如果说我们有一万个,或者十万个,或者一百万个这样的请求,我们就会新开十万,一百万这样的进程,然后再去终止掉,本身来说,非常浪费我们的资源。此时 FastCGI 就出现了,它主要是 以 CGI的改良版本出现,每次处理完请求之后,不会终止掉这个进程,而是保留这个进程,使这个进程可以一次处理多个请求,这样的话,每次就不用重新开一个进程了,大大提升了我们的效率。
  • PHP-FPM : (FastCGI Process Manager : FastCGI的进程管理器) , FPM是 FastCGI的一个实现,并且提供了进程管理的功能。进程 包括 master进程worker进程 两种进程, master进程 只有一个,负责监听端口,接收来自 Web Server的请求;而 Worker进程 则一般会有多个,具体的数量会在 FPM的配置中进行定义,每个进程的内部都会嵌入一个PHP解析器(那就是PHP代码真正执行的地方),也就是说,worker 来进行处理 PHP代码,而 master 主要是监听端口,跟 Web Server 来进行接收请求。本身来说,master监听端口默认情况下是 9000,通过** Nginx的反向代理**去代理 9000端口,所以在这儿我们可以完成 FPM的相关处理。

2) PHP的常见配置项

  • register_globals :注入变量(当我们把此项开启的时候, 各种变量都会被注入代码,例如来自HTML表单的请求变量,再加上PHP在使用变量之前是无需进行初始化的,使得更容易出现写出不安全的代码,当打开的时候,无法知道变量是从哪里来的 )【不建议打开】
  • allow_url_fopen :是否允许打开远程文件
  • allow_url_include :允许远程包含文件
  • date.timezone :设置时区
  • display_errors :是否显示错误【在开发环境下开启此项,在生产环境下一定要关闭】
  • error_reporting :显示错误级别设置【建议一直关闭掉】
  • safe_mode :是否开启安全模式
  • upload_max_filesize :上传的最大的文件大小是多少
  • max_file_uploads :上传的最大文件数量是多少
  • post_max_size:提交的post数据的最大大小是多大

二、解题方法

理解并牢记以上知识点并理解PHP运行原理

三、真题

请简述CGI、FastCGI 和 PHP-FPM 的区别。

CGI : 为了联系 Web Server 跟PHP解析器中的一个协议,它起一个桥梁的作用。
FastCGI : 是 CGI的改良版本。
PHP-FPM : FastCGI Process Manager,FastCGI进程管理器。

文章作者: Alex
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex !
 上一篇
JavaScript 基本知识 JavaScript 基本知识
JavaScript 基本语法1) 变量的定义 变量必须以字母开头; 变量也能以 $ 和 _ 符号开头; 变量名称对大小写敏感; 使用 var 关键字来声明变量; 注意事项: 可以在一条语句中声明很多变量(如: var a=1, b
2020-07-09 Alex
下一篇 
【PHP面试题】HTTP/1.1中,状态码 200 301 304 403 404 500 的含义。 【PHP面试题】HTTP/1.1中,状态码 200 301 304 403 404 500 的含义。
一、考点1、HTTP协议状态码① 状态码的作用: HTTP状态码本身负责客户端HTTP请求返回的结果,标记服务器端的处理是否正常,通知出现的一些错误等等工作。状态码的职责是当我们的客户端向我们的服务器端发送请求的时候,描述返回的结果,使得用
2020-07-08
  目录