PHP面试 PHP基础知识 十一(开发环境及相关配置)

开发环境及相关配置

   版本控制软件
      集中式和分布式

        集中式:集中式版本控制工具,版本库集中存放在中央服务器,团队成员里的每个人工作时从中央服务器下载代码,个人修改后再提交到中央服务器

        分布式:分布式版本控制工具,没有中央服务器,每个开发人员都通过clone,在本地拷贝一个完整的仓库。

      Git 与 Svn

        Svn的特点(集中式)

          1、每个版本库有唯一的URL,每个用户都从这个地址获取代码和数据

          2、获取代码的更新,也只能连接到这个唯一的版本库,同步以取得最新数据

          3、提交必须有网络连接(非本地版本库)

          4、提交需要授权,如果没有写权限,提交会失败

          5、提交并非每次都能成功。如果其他人先于你提交,会提示基于过时的版本,先更新再提交。

          6、冲突解决时一个提交速度的竞赛:手快着,先提交,平安无事;手慢着,后提交,可能产生冲突。

        Git的特点(分布式)

          1、Git中每个克隆的版本库都是平等的。你可以从任何一个版本库的克隆来创建属于你自己的版本库,同时你的版本库也可以作为源提供给他人,只要你愿意。

          2、Git的每一次提取操作,实际上都是一次对代码仓库的完整备份。提交完全在本地完成,无须别人给你授权,你的版本库你做主,并且提交总是会成功。

          3、甚至基于旧版本的改动也可以成功提交,提交会基于旧的版本创建一个新的分支

          4、Git的提交不会被打断,知道你的工作完全满意了,PUSH给他人或者他人PULL你的版本库,合并会发生再PULL和PUSH过程中,不能自动解决的冲突会提示你手工完成。

          5、冲突解决不再像是SVN一样的提交竞赛,而是在需要的时候才进行合并和冲突解决。

        Git与Svn的优缺点

          Svn优点:

            1、管理方便,逻辑明确,符合一般人思维习惯。

            2、易于管理,集中式服务器更能保证安全性。

            3、代码一致性非常高

            4、适合开发人数不多的项目开发

          缺点:

            1、服务器压力太大,数据库容量暴增。

            2、如果不能连接到服务器上,基本不可以工作

            3、不适合开源开发。

          Git的优点:

            1、适合分布式开发,强调个体

            2、公共服务器压力和数据量都不会太大

            3、速度快、灵活

            4、任意两个开发者之间可以很容易的解决冲突

            5、离线工作

          缺点:

            1、学习周期相对而言比较长

            2、不符合常规思维

            3、代码保密性差。

   PHP的运行机制和运行原理

      首先说一下PHP的运行机制,说之前先给大家介绍一下PHP的模块,PHP总共有三个模块:内核、Zend引擎、以及扩展层;PHP内核用来处理请求、文件流、错误处理等相关操作;Zend引擎用以将源文件转换成机器语言,然后再虚拟机上运行它;扩展层是一组函数、类库和流,PHP使用他们来执行一些特定的操作。比如,我们需要MySQL扩展来连接MySQL数据库;当Zend执行程序时可能会需要连接若干扩展,这时Zend将控制权交给扩展,等处理完成特定任务后返回给Zend;最后Zend将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。

      PHP的设计理念及特点

      多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务器造成影响,当然随着时代发展,PHP也早已支持多线程模型。

      弱类型语言:和C/C++、Java、C#等语言不同,PHP是一门弱类型语言。一个变量的类型并不是一开始就确定不变,运行中才会确定可能发生隐式或显式的类型转换,这种机制的灵活性再web开发中非常方便、高效。

      Zend引擎+ext组件的模式降低内部耦合

      中间层sapi隔绝  web    server 和 php

      语法简单灵活、灭有太多规范。缺点导致风格混杂,再差的程序员也不会写出太离谱危害全局的程序

      

      PHP四层体系

      Zend引擎:Zend整体用纯C实现,是PHP的内核部分,它将PHP代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕Zend实现。

      Extensions:围绕着Zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array系列)、标准库等都是通过extension来实现,用户也可以根据需要实现自己的extension以达到功能扩展、性能优化等目的(如贴吧正在使用的PHP中间层、富文本解析就是extension的典型应用)。

      Sapi:Sapi全称是Server Application Programming Interface,也就是服务端应用编程接口,Sapi通过一系列钩子函数,使得PHP可以和外围交互数据,这是PHP非常优雅和成功的一个设计,通过sapi成功的将PHP本身和上层应用解耦隔离,PHP可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。

      上层应用:这就是我们平时编写的PHP程序,通过不同的sapi方式得到各种各样的应用模式,如通过webserver实现web应用、在命令行下以脚本方式运行等等。

      如果PHP是一辆车,那么车的框架就是PHP本身,Zend是车的引擎(发动机),Ext下面的各种组件就是车的轮子,Sapi可以看做是公路,车可以跑在不同类型的公路上,而一次PHP程序的执行就是汽车跑在公路上。因此,我们需要:性能优异的引擎+合适的车轮+正确的跑道。

   PHP的常见配置项

    zend.enable_gc     是否开启垃圾回收机制

    safe_mode             是否启用安全模式

    allow_url_include  是否允许通过include/require来执行一个远程文件

    allow_url_fopen     是否允许打开远程文件

    register_globals    判断是否将$_GET,$_POST等数组变量里的内容自动注册为全局变量

    enable_dl              是否允许使用dl()函数再脚本运行时加载PHP扩展

    log_errors             PHP错误报告日志功能

    error_log               错误报告日志文件路径

    error_reporting      错误级别

    max_execution_time   脚本所能运行的最长时间

    memory_limit         PHP进程能够占用的内存

    post_max_size      POST方法提交数据的最大大小限制

    file_uploads           是否允许文件上传

    max_file_uploads    一个请求允许上传的最大文件数量限制

    upload_tmp_dir     文件上传时存放文件的临时路径

    upload_max_filesize    上传文件的最大大小限制

    session.save_path     session文件存放的位置

    session.save_handle   设置session数据的存储方式

    session.use_cookies   是否使用cookie再客户端存储sessionid

    session.name  设置session名称

    extension_dir   存放扩展库的目录

    date.timezone    设置时区

    了解更多PHP配置:https://www.cnblogs.com/wujuntian/p/5768336.html

原文地址:https://www.cnblogs.com/dcrq/p/11072042.html

时间: 2024-11-08 23:23:27

PHP面试 PHP基础知识 十一(开发环境及相关配置)的相关文章

基础知识 - 在 Ubuntu 14.04 中配置 Sublime Text 3 的 Golang 开发环境

1.下载 golang 并解压(这里以解压到 $HOME/golang/ 目录为例): http://www.golangtc.com/download 2.创建 GoPath 相关目录(这里以 $HOME/golang/projects/ 目录为例): mkdir ~/golang mkdir ~/golang/projects mkdir ~/golang/projects/3rdparty mkdir ~/golang/projects/3rdparty/bin mkdir ~/golan

Ant学习-001-ant 基础知识及windows环境配置

一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.TestNG等搭建持续集成测试开发环境,从而高效.高质量的构建产品. Ant 有以下一些优点: 跨平台,可移植.Ant 是 Java 语言编写的,所以有很好的跨平台性和可移植性,无论是在 windows.Linux,还是 mac. 操作简单. Ant 是由一个内置任务和可选任务组成的,运行时需要一个构

ASP.NET Core 2.2 基础知识(十一) ASP.NET Core 模块

原文:ASP.NET Core 2.2 基础知识(十一) ASP.NET Core 模块 ASP.NET Core 应用与进程内的 HTTP 服务器实现一起运行.该服务器实现侦听 HTTP 请求,并在一系列请求功能被写到 HttpContext 时,将这些请求展现到应用中. ASP.NET Core 随附两种服务器实现: Kestrel 是适用于 ASP.NET Core 的默认跨平台 HTTP 服务器. HTTP.sys 是仅适用于 Windows 的 HTTP 服务器,它基于 HTTP.sy

我的全栈之路-C语言基础之集成开发环境搭建

我的全栈之路-C语言基础之集成开发环境搭建 我的全栈之路 2.1 C语言集成开发环境搭建 目前主流的操作系统(Windows,Linux,macOS)都有完善的C语言集成开发环境,用于编辑.编译.调试.打包部署C程序. 操作系统 开发工具 Windows10 1903 Visual Studio2019 macOS10.14 XCode10.3 Ubuntu18.04 QT5.13 Windows作为世界上最流行的桌面操作系统,当前最新版本为Windows10 1903,VisualStudio

Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 详细图文讲解

android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把环境搭建起来了,把过程记录下来分享给大家. 内容目录: 1.默认基础环境 2.NDK下载与配置 3.安装Cygwin 4.用NDK编译 5.安装CDT插件 6.安装Sequoyah插件 7.JNI编译环境配置 画了一个思维导图让大家一目了然配置过程 ---------------------------

【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把环境搭建起来了,把过程记录下来分享给大家. 内容目录: 1.默认基础环境 2.NDK下载与配置 3.安装Cygwin 4.用NDK编译 5.安装

搭载Azure的开发环境及相关资源的使用输入日志标题

搭载Azure的开发环境及相关资源的使用 从http://azure.microsoft.com/zh-cn/downloads/?rnd=1下载azure开发工具,Visual Studio 2013 update 4 ; 安装好之后,下载Azure SDK, 下载后,通过 Microsoft Web平台安装程序来获得并安装它们.接下来,你去可以微软下载官网,下载试用版的SQL-Server 2014 : 现在我们就可以导入Azure 订阅了: 首先,从https://manage.windo

Third Day(上班第四天):Android开发环境配置问题相关

换公司新电脑了,重新安装Android开发环境,并配置,具体流程如下:1.百度JDK,访问Oracle官网:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html Downloads最新版Java SE,注意在设定保存安装的过程中确保路径为全英文,本次:F:\Java\JDK2.打开下载好的安装文件,进行JDK的安装,在安装的过程中会跳出提示进行JRE的顺带安装,同样选好 路径为:F:\Java\

Java3D 集成开发环境部署与配置(含实例)

Java 3D开发相关的准备: 第一:下载Java 3D库 参考网址一:https://java3d.java.net/ 参考网址二: http://translate.google.com/translate?hl=zh-CN&rurl=translate.google.com.hk&tl=zh-CN&u=http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-j