찾다
php教程php手册判断Keep-Alive模式的HTTP请求的结束的实现代码

在使用短连接方式时,每个HTTP请求对应一个TCP连接,请求完成后连接立即断开,服务器返回EOF。

所以根据EOF就可判断一次请求的结束,下面的代码(PHP)很常见:
代码如下:
// $fp是由fsockopen()产生的句柄
while(!feof($fp)) {
echo fgets($fp);
}

(注:短连接模式是在头部用”Connection: close”标示,长连接用”Connection: keep-alive”标示。目前HTTP/1.0默认使用短连接,HTTP/1.1默认使用长连接。)
而长连接(也称持久连接)模式的HTTP在发送完数据后服务器并不断开连接,而是留着下一次HTTP请求时使用,所以长连接的好处是显而易见的,通过共用一个TCP连接来节省以后请求时建立/断开连接的开销。而EOF是直到这个TCP连接结束(超时或出错)时才会被发送,所以我们就不能使用上面的办法来判断一次HTTP请求的结束了。这也是使用长连接时都会遇到的一个问题。目前判断的方法主要有两种:
(1) 根据头中的Content-Length字段。这个字段标明了正文的长度,我们可以以接收完指定长度的字符为判断结束的依据。
(2) 在没有Content-Length时,根据Transfer-Encoding。有些时候服务器无法确定正文的大小,因为正文可能是动态产生的,所以就不会提供Content-Length了,而是采用chunk编码来一块一块地发送正文。每个chunk块由头部和正文两部分组成,头部中由一个16进制数字指定了正文的长度;最后由一个长度为0的chunk块来表示整个HTTP正文的结束。
下面我用PHP实现了有Content-Length时的判断方式:
1. 获得Content-Length值
代码如下:
$length = 0;
$line = '';
while($line !== "\r\n") {
$line = fgets($fp);
if(substr($line, 0, 15) === 'Content-Length:') {
$length = intval(substr($line, 16));
}
}

2. 获得正文
代码如下:
$sum = 0;
while($sum $line = fgets($fp);
$sum += strlen($line);
echo $line;
}
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
使用vue的keep-alive组件实现页面缓存更新策略使用vue的keep-alive组件实现页面缓存更新策略Jul 21, 2023 pm 05:58 PM

使用Vue的keep-alive组件实现页面缓存更新策略引言:在开发Web应用程序时,经常需要处理页面缓存和更新的策略。基于Vue的SPA(Single-PageApplication)应用程序,我们可以使用Vue的keep-alive组件来进行页面缓存和更新的控制。本文将介绍如何使用Vue的keep-alive组件实现页面缓存更新策略,并提供相应的代码示

vue中keep-alive的工作原理及使用方法详解vue中keep-alive的工作原理及使用方法详解Jul 21, 2023 am 11:58 AM

Vue.js是一个流行的前端框架,提供了一些方便的功能来优化性能和提升开发效率。其中一个功能是keep-alive,它可以帮助我们在组件之间保留状态,从而减少不必要的渲染和请求。本文将详细介绍keep-alive的工作原理以及使用方法,并提供一些代码示例。一、keep-alive的工作原理在Vue.js中,每当我们切换组件时,组件都会被重新创建

如何使用vue的keep-alive优化单页应用的性能如何使用vue的keep-alive优化单页应用的性能Jul 21, 2023 am 09:25 AM

如何使用Vue的keep-alive优化单页应用的性能在开发现代Web应用时,性能一直是一个重要的关注点。随着前端框架的发展,Vue作为一款流行的JavaScript框架,为我们提供了许多工具和技术来优化应用的性能。其中之一就是Vue的keep-alive组件。Vue的keep-alive是一个抽象组件,可以将动态组件缓存起来,以避免重复渲染和销毁。使用ke

如何在vue中利用keep-alive提升前端开发效率如何在vue中利用keep-alive提升前端开发效率Jul 21, 2023 am 09:01 AM

如何在Vue中利用keep-alive提升前端开发效率前端开发的性能一直是开发人员关注的重点之一。为了提升用户体验和页面加载速度,我们经常要考虑如何优化前端渲染。Vue作为一款流行的前端框架,提供了keep-alive组件来解决非活动组件的性能问题。本文将介绍keep-alive的使用方法,并通过代码示例展示其在Vue中如何提升前端开发效率。keep-ali

Vue3中的keep-alive函数详解:优化应用性能的应用Vue3中的keep-alive函数详解:优化应用性能的应用Jun 18, 2023 pm 11:21 PM

Vue3中的keep-alive函数详解:优化应用性能的应用在Vue3中,keep-alive函数变得更加功能强大,可以实现更多的优化功能。通过keep-alive函数,可以将组件状态保留到内存中,避免组件的重复渲染,提升应用的性能和用户体验。本文将详细介绍Vue3中keep-alive函数的使用方法和优化策略。一、keep-alive函数介绍在Vue3中,

Go语言中http.Transport的Keep-Alive配置与性能优化方法Go语言中http.Transport的Keep-Alive配置与性能优化方法Jul 22, 2023 am 09:13 AM

Go语言中http.Transport的Keep-Alive配置与性能优化方法在使用Go语言进行网络编程时,我们经常会使用到http.Transport来发送HTTP请求。其中,http.Transport提供了Keep-Alive的功能,可以在多个请求之间复用TCP连接,从而提高性能。本文将介绍如何在Go语言中配置http.Transport的Keep-A

Vue3中的keep-alive函数:提升应用性能Vue3中的keep-alive函数:提升应用性能Jun 18, 2023 pm 02:56 PM

在Vue3中,为了优化应用性能,新增了一个名为keep-alive的函数。这个函数可以将组件缓存起来,避免在切换时重新渲染,从而提高应用的整体性能。一、keep-alive函数的作用在Vue3中,keep-alive函数可以用来缓存组件,等待再次使用。在渲染过程中,如果一个组件不被销毁,也就不需要重新初始化状态,以及重新计算计算属性等。这个函数接收一个

Vue 中如何使用 keep-alive 优化性能?Vue 中如何使用 keep-alive 优化性能?Jun 11, 2023 pm 01:04 PM

在开发Web应用程序时,我们都很关注应用程序的性能。其中一个常见的场景是点开一个页面,然后返回上一页,这个过程中,页面需要重新加载一遍。这对于用户体验来说是很不友好的,而且还会浪费服务器资源和用户的流量。为了避免这种情况,我们可以使用Vue中提供的keep-alive来进行缓存,从而提高应用程序的性能。什么是keep-alive?keep-al

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기