yulu

普通PHP面试遇到的问题6

  1. 长链接与短链接有什么作用,以及优缺点

    • http 1.0版本,默认是短链接。服务器和浏览器每进行一次http操作,就建立一次链接,但是任务结束就中断链接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话
      短连接的操作步骤是:
      建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接
      短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。
    • http 1.1版本,默认是长链接。使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive;在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
      建立连接——数据传输…(保持连接)…数据传输——关闭连接
      长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。不过这里存在一个问题,存活功能的探测周期太长,还有就是它只是探测TCP连接的存活,属于比较斯文的做法,遇到恶意的连接时,保活功能就不够使了。在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可 以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个蛋疼的客户端连累后端服务。

      详细介绍

  2. http协议中的GET,POST,HEAD;PUT与POST的区别
    GET:获取数据
    POST:提交数据
    HEAD:获取消息头的内容

    PUT与POST的区别:对同一条数据的更改使用PUT,POST操作是用来产生两条有差异的数据。

  3. if(!$str){echo 111} 问什么时候输出111
    $str = null,0,’’,array()

  4. session 与cookie的区别,从其生成以及作用方面阐述
    session:是由服务端创建且存储在服务端的数据
    cookie:是由客户端生成且保存在客户端的数据
    服务端可以通过session与cookie的联合来标示用户。

  5. 观察者模式适用于什么场景
    观察者模式:定义对象间一对多的关系,当一个对象的状态发生改变时,所有依赖于它的对象都要得到通知并自动更新。
    类似于拍卖会竞价。
    MVC:模型层充当观察目标,视图为观察者,控制器充当传输媒介;当模型层的数据发生改变时,响应的视图层所展示的内容也跟着发生改变。