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
PHP面试 PHP基础知识 十一(开发环境及相关配置)的更多相关文章
- Ant学习-001-ant 基础知识及windows环境配置
一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- 20162312 实验一 Linux基础与Java开发环境
实 验 报 告 课程:程序设计与数据结构 姓名:张家铖 班级:1623 学号:20162312 实验名称: Linux基础与Java开发环境 实验器材:msi GL62M 7RD 实验目的与要求:1. ...
- 实验一 Linux基础与Java开发环境
实验一 (一)实验内容 基于命令行和IDE(Intellj IDEA 简易教程http://www.cnblogs.com/rocedu/p/4421202.html)进行简单的Java程序编辑.编译 ...
- 20182332 实验一《Linux基础与Java开发环境》实验报告
20182332 实验一<Linux基础与Java开发环境>实验报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 盛国榕 学号:20182332 实验教师:王志强 ...
- Android开发环境搭建相关文章列表(转载)
Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1, ...
- 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...
- android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...
- Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 具体图文解说
版权声明:本博客全部文章均为原创.欢迎交流.欢迎转载:转载请勿篡改内容,而且注明出处,谢谢! https://blog.csdn.net/waldmer/article/details/3272500 ...
随机推荐
- SQL:REGEXP
作为一个更为复杂的示例,正则表达式B[an]*s匹配下述字符串中的任何一个:Bananas,Baaaaas,Bs,以及以B开始.以s结束.并在其中包含任意数目a或n字符的任何其他字符串. 以下是可用于 ...
- vs2005安装 和 Fatal Error C1902
win10系统不能激活 win7可以激活,运行会出现兼容错误,解决办法装2个sp1补丁 拷贝mspdb80.dll到系统目录后会出现 Fatal Error C1902, 解决方法如下: VC++20 ...
- Python 进阶_迭代器 & 列表解析
目录 目录 迭代器 iter 内建的迭代器生成函数 迭代器在 for 循环中 迭代器与字典 迭代器与文件 创建迭代器对象 创建迭代对象并实现委托迭代 迭代器的多次迭代 列表解析 列表解析的样例 列表解 ...
- bootstrap基础模板页面,详细注释
<!--html5 骨架--> <!DOCTYPE html> <!--语言是中文简体--> <html lang="zh-cn"&g ...
- mybatis的一些小细节
Mybatis要解决的问题: 1. 将sql语句硬编码到java代码中,如果修改sql语句,需要修改java代码,重新编译.系统可维护性不高. 设想如何解决? 能否将sql单独配置在配置文件中. 2. ...
- QC OTA
Note: First make sure QTP connect to QC.(转自:http://blog.csdn.net/franktan2010/article/details/724331 ...
- txt文本程序 打开python文件 另存为原来的文件名,不能覆盖原来的文件解决
txt文本程序 打开python文件 另存为原来的文件名,不能覆盖原来的文件 如:1.py文件用txt文本程序打开后,另存为 1.py,保存完毕后,不覆盖1.py文件,会生成 1.py.txt文件 原 ...
- docker-bridge network
根据下面这图示,可以了解两个container之间是如何通信的 通过ip link 和 ip a可以看到本地有个docker0 link. [root@localhost ~]# ip link : ...
- OpenCV2马拉松第9圈——再谈对照度(对照度拉伸,直方图均衡化)
收入囊中 lookup table 对照度拉伸 直方图均衡化 葵花宝典 lookup table是什么东西呢? 举个样例,假设你想把图像颠倒一下,f[i] = 255-f[i],你会怎么做? for( ...
- js 页面跳转 新窗口打开
页面跳转:Window.showModalDialog(url,width,height); 弹出一个html文档的模式对话框Parent.window.document.location.href ...