分享一波腾讯PHP面试题(建议收藏)

本文汇总了腾讯PHP面试中的核心问题,涵盖垃圾回收机制、Session与Cookie的区别、Session生存时间调整、重定向方法、数据库抽象层比较、长连接与短连接、HTTP协议解析、通讯加密方案、Socket连接步骤、TCP的三次握手与四次挥手等内容,旨在帮助开发者准备PHP面试,提升技能。
摘要由CSDN通过智能技术生成

1. php 的垃圾回收机制

PHP 可以自动进行内存管理,清除不需要的对象。

PHP 使用了引用计数 (reference counting) GC 机制。

每个对象都内含一个引用计数器 refcount,每个 reference 连接到对象,计数器加 1。当 reference 离开生存空间或被设为 NULL,计数器减 1。当某个对象的引用计数器为零时,PHP 知道你将不再需要使用这个对象,释放其所占的内存空间。

参考 http://www.php.net/manual/zh/features.gc.r...

2. 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 没有大小和数量限制。

关系:

  1. Session 需要借助 Cookie 才能正常工作。如果客户端完全禁止 Cookie,Session 将失效!因为 Session 是由应用服务器维持的一个 服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的 SessionID, 用该 SessionID 为标识符来存取服务器端的 Session 存储空间。而 SessionID 这一数据则是保存到客户端,用 Cookie 保存的,用户提交页面时,会将这一 SessionID 提交到服务器端,来存取 Session 数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用 Cookie,那么 Session 也会失效。

 

3. 如何修改 SESSION 的生存时间

  1. 设置浏览器保存的 sessionid 失效时间 setcookie (session_name (), session_id (), time () + $lifeTime, "/");
  2. 可以使用 SESSION 自带的 session_set_cookie_params (86400); 来设置 Session 的生存期
  3. 通过修改 php.ini 中的 session.gc_maxlifetime 参数的值就可以改变 session 的生存时间

点击观看-->【粉丝福利】30G-PHP进阶资料,拿到你也能30K,免费领取

4. PHP 页面重定向的方法有哪些

  1. header('Location: http://www.baidu.com/') ;
  2. echo '';

3 echo '';

 

5. 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...

 

6. 长连接、短连接的区别和使用

长连接:client 方与 server 方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于 P2P 通信。

短连接:Client 方与 server 每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。C/S 通信。

长连接与短连接的使用时机:

长连接:

短连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个 TCP 连 接的建立都需要三次握手,每个 TCP 连接的断开要四次握手。如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作下次操作时直接发送数据 就可以了,不用再建立 TCP 连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成 socket 错误,频繁的 socket 创建也是对资源的浪 费。

短连接:

web 网站的 http 服务一般都用短连接。因为长连接对于服务器来说要耗费一定 的资源。像 web 网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省一些资源。试想如果都用长连接,而且同时用成千上万的用户,每个用户都占有一个 连接的话,可想而知服务器的压力有多大。所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。

参考 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值