腾讯 PHP 面试必备知识
限于篇幅,完整试题请自行下载:https://u13950671.ctfile.com/fs/13950671-3...
- php的垃圾回收机制
PHP可以自动进行内存管理,清除不需要的对象。
PHP使用了引用计数(reference counting) GC机制。
每个对象都内含一个引用计数器refcount,每个reference连接到对象,计数器加1。当reference离开生存空间或被设为NULL,计数器减1。当某个对象的引用计数器为零时,PHP知道你将不再需要使用这个对象,释放其所占的内存空间。
参考 http://www.php.net/manual/zh/features.gc.r...
- session与cookie的区别和联系
区别:
1.存放位置:Session保存在服务器,Cookie保存在客户端。
2.存放的形式:Session是以对象的形式保存在服务器,Cookie以字符串的形式保存在客户端。
3.用途:Cookies适合做保存用户的个人设置,爱好等,Session适合做客户的身份验证
4.路径:Session不能区分路径,同一个用户在访问一个网站期间,所有的Session在任何一个地方都可以访问到。而Cookie中如果设置了路径参数,那么同一个网站中不同路径下的Cookie互相是访问不到的。
5.安全性:Cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session
6.大小以及数量限制:每个域名所煲含的cookie 数:IE7/8,FireFox:50个, Opera30个; Cookie总大小:Firefox和Safari允许cookie多达4097个字节,Opera允许cookie多达4096个字 节,InternetExplorer允许cookie多达4095个字节;一般认为Session没有大小和数量限制。
联系:
-
Session需要借助Cookie才能正常工作。如果客户端完全禁止Cookie,Session将失效!因为Session是由应用服务器维持的一个 服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID 提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
-
如何修改SESSION的生存时间
-
设置浏览器保存的sessionid失效时间 setcookie(session_name(), session_id(), time() + $lifeTime, "/");
-
可以使用SESSION 自带的 session_set_cookie_params(86400); 来设置 Session 的生存期
-
通过修改php.ini中的session.gc_maxlifetime参数的值就可以改变session的生存时间
-
PHP页面重定向的方法有哪些
-
header('Location: http://www.baidu.com/') ;
-
echo '';
3 echo '';
- PDO、adoDB、PHPLib数据库抽象层比较
PHP数据库抽象层就是指,封装了数据库底层操作的介于PHP逻辑程序代码和数据库之间的中间件。
PDO以PHP 5.1为基础进行设计,它使用C语言做底层开发,设计沿承PHP的特点,以简洁易用为准,从严格意义上讲,PDO应该归为PHP 5的SPL库之一,而不应该归于数据抽象层,因为其本身和MySQL和MySQLi扩展库的功能类似。PDO是不适合用在打算或者有可能会变更数据库的系 统中的。
ADODB不管后端数据库如何,存取数据库的方式都是一致的;
转移数据库平台时,程序代码也不必做太大的更动,事实上只需要改动数据库配置文 件。提供了大量的拼装方法,目的就是针对不同的数据库在抽象层的底层对这些语句进行针对性的翻译,以适应不同的数据库方言!但是这个抽象层似乎体积过于庞 大了,全部文件大概有500K左右,如果你做一个很小的网站的话,用这个似乎大材小用了
PHPLib可能是伴随PHP一同成长最老的数据库抽象层(但和ADODB相比,它只算是一个MySQL抽象类库),这个抽象类使用方法相当简单,体积小,是小型网站开发不错的选择。
PDO提供预处理语句查询、错误异常处理、灵活取得查询结果(返回数组、字符串、对象、回调函数)、字符过滤防止SQL攻击、事务处理、存储过程。
ADODB支持 缓存查询、移动记录集、(HTML、分页、选择菜单生成)、事务处理、输出到文件。 参考 http://apps.hi.baidu.com/share/detail/4636...
- 长连接、短连接的区别和使用
长连接:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于P2P通信。
短连接:Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。C/S通信。
长连接与短连接的使用时机:
长连接:
短连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个TCP连 接的建立都需要三次握手,每个TCP连接的断开要四次握手。如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作下次操作时直接发送数据 就可以了,不用再建立TCP连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,频繁的socket创建也是对资源的浪 费。
短连接:
web网站的http服务一般都用短连接。因为长连接对于服务器来说要耗费一定 的资源。像web网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省一些资源。试想如果都用长连接,而且同时用成千上万的用户,每个用户都占有一个 连接的话,可想而知服务器的压力有多大。所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。
参考http://www.cnblogs.com/Roberts/archive/2010/12/05/1986550.html
- HTTP协议详解、应用
http(超文本传输协议)是一个基于请求与响应模式的、无状态的、短连接、灵活、应用层的协议,常基于TCP 的连接方式。
参考 http://blog.csdn.net/gueter/article/detail... (http协议详解)
(HTTP响应状态码)
HTTP响应状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器超时 //可能恢复正常
304 Not Modifed //自从上次请求后,请求的网页未修改过。
//服务器返回此响应时,不会返回网页内容。
- 异构系统通讯中的通讯加密方案
参考 http://blog.csdn.net/linvo/article/details...
本作品采用《CC 协议》,转载必须注明作者和本文链接