찾다
운영 및 유지보수Apache시간 초과로 PHP가 Apache에 연결하는 방법

시간 초과로 PHP가 Apache에 연결하는 방법

Jun 29, 2019 pm 01:37 PM
apachephp연결 시간 초과

시간 초과로 PHP가 Apache에 연결하는 방법

머리말

브라우저와 아파치 사이의 연결 시간 초과 문제를 이해하려면 먼저 http의 연결 유지 속성을 이해해야 합니다. 먼저 keep-alive에 대해 간단히 소개하겠습니다. 자세한 소개는 온라인에서 확인하실 수 있습니다.

브라우저와 아파치 모두 http 프로토콜을 기반으로 합니다. http 프로토콜의 연결 유지 속성에 대한 일반적인 설명은 브라우저와 아파치가 처음으로 TCP 연결을 설정한다는 것입니다. 데이터가 전송된 후 TCP 연결이 즉시 끊어지지 않고 계속해서 연결이 끊어질 때까지 기다립니다. 다음 요청. 일정 시간(keep-alive-time)이 지나면 연결이 끊어집니다.

Keep-Alive 지원을 켜고 끌 때 Apache의 TCP 연결 상태를 확인하는 테스트를 해보자.

Server 가상 머신의 Centos
Client 이 머신의 IE6 브라우저
서버 주소 192.168.212.128
클라이언트 주소 192.168 .212.1
접근한 파일 test.html
  
  
<meta>  
<link>  
<script></script>  
  
  
您知道吗?A处和B处的色值是一样的。<br>  
<img  src="/static/imghwm/default1.png" data-src="./main.jpg" class="lazy" alt="시간 초과로 PHP가 Apache에 연결하는 방법" >  
  

먼저 apache의 keep-alive 매개변수를 끄고 httpd.conf를 엽니다.

아파치에 액세스하려면 브라우저를 엽니다. netstat 명령을 사용하여 연결 상태를 확인하십시오.

#netstat –nt|grep –i ’80′

4개의 연결을 볼 수 있는데, 로컬 접속 속도가 매우 빠르기 때문에 TIME_WAIT 상태만 캡쳐할 수 있습니다. test.html 웹 페이지에 4개의 링크가 있는 이유는 무엇입니까?

test.html의 내용을 보면

1, main.css 파일

2, main.js 파일

3, main.jpg 그림

4이 있다는 것을 알 수 있습니다. 자체 테스트입니다. html 파일

그래서 4개의 연결이 있습니다.

아파치의 연결 유지 지원을 끈 후 연결 상태를 살펴보겠습니다.

서버를 다시 시작하고 브라우저로 test.html에 접속하여 연결을 확인하세요.

#service httpd restart

#netstat –nt|grep –i ’80′

연결이 하나만 있는 것을 볼 수 있습니다. 그리고 연결 상태는 ESTABLISHED입니다. httpd.conf에 keepAlliveTimeout=15를 설정하여 연결이 설정된 후 15초 후에 연결이 닫힙니다.

테스트 결론

아파치의 연결 유지 속성을 끄면 js, css, 그림 등을 포함하여 액세스한 페이지(위 예에서는 test.html)의 모든 파일에 연결 유지 속성을 설정해야 합니다. 새로운 TCP 연결. 참조된 파일 수만큼 연결이 존재합니다. 특정 수의 파일은 Firefox의 BUG 도구를 사용하여 볼 수 있습니다.

위 사진의 하단 11개 요청은 웹페이지에서 참조해야 하는 파일 개수입니다.

아파치의 연결 유지 속성을 활성화하면 js, css, 이미지 등을 포함하여 액세스한 페이지(위 예에서는 test.html)의 모든 파일이 TCP 연결만 설정하고 모든 데이터를 순서. 연결을 닫기 전에 모든 데이터가 전송된 후 KeepAliveTimeout =15초 동안 기다리십시오.

인터넷에서 본 참고 자료:

현재 Apache가 초당 100명의 사용자 방문에 응답하는 경우 KeepAliveTimeOut=5이면 httpd 프로세스 수는 100*5=500(프리포크 모드)이고 하나의 httpd 프로세스입니다. 5M 소모 메모리는 500*5M=2500M=2.5G 인데 과장인가요? 물론 Apache와 클라이언트는 100개의 TCP 연결만 만들었습니다. 메모리가 충분히 크면 시스템 로드가 너무 높지 않습니다. 메모리가 2.5G 미만인 경우 스왑을 자주 사용하면 CPU 로드가 증가합니다.

이제 KeepAlive를 끄고 Apache는 여전히 초당 100명의 사용자 방문에 응답합니다. 이미지, js, css 등이 분리되어 있고 각 방문에 대해 요청이 1번만 있고 이에 대한 httpd 프로세스 수가 있기 때문입니다. 시간은 100* 1=100, 메모리 100*5M=500M을 사용합니다. 이때 Apache와 클라이언트도 100개의 TCP 연결을 만들었습니다. 성능이 많이 좋아졌습니다.

브라우저 연결 시간 초과

각 브라우저에는 기본 연결 시간 초과가 있습니다. IE6의 기본 시간은 60분입니다.

이 값은 레지스트리를 통해 수정할 수 있습니다.

1. 레지스트리를 엽니다: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet 설정.

2. DWORD 값이 있는 항목을 추가하고 이름을 ReceiverTimeout으로 설정한 다음 1000으로 설정합니다. 이 값의 기본 단위는 밀리초이며, 여기서 설정하는 시간은 1초입니다.

브라우저가 웹사이트에 접속하기 시작하면 시작되고, 1초 후에 연결이 종료됩니다. (설정값은 다소 극단적이지만 표시하기에는 편리합니다.)

웹사이트에 액세스하려면 브라우저를 다시 시작하세요.

Server 가상 머신의 Centos
Client 이 머신의 IE6 브라우저
서버 주소 192.168.212.128
클라이언트 주소 192.168 .212.1
액세스된 파일 index.php
<?php   
echo date(&#39;H:i:s&#39;,time());  
sleep(10);  
?>

可以看到浏览器显示找不到服务器,但是访问刚才的test.html是可以访问的。

访问index.php显示连接不成功。因为index.php中sleep(10)延迟10秒的函数。而IE6的连接超时时间为1秒。所以就连接失败了。

访问test.hml可以成功连接。因为是访问本地服务器,传输速度很快,在IE6的1秒超时时间之内就已经传完全部数据了。

测试得到的结论

IE6的默认连接超时时间为60分。可以通过注册表中ReceiveTimeout值修改该值。

实际作用:使用IE6往服务器上传一个大文件,如果上传时间超过60分钟就会断开连接。

这也是为什么有些网站要专门开发active插件来实现IE6的大文件上传了。用户是不会主动修改这个值的。

apache的连接超时

看apache的配置文件可以看到有个timeout值。

有人会以为这个是apache的连接超时参数。

我们把它设置为timeout =1访问index.php。

看到还是可以访问的,那么这个timeout不是apache的连接超时时间。timeout是apache收到上一个请求和后面一个请求到来之间的最大值。您可以查看浏览器与apache通讯中的TCP连接状态迁移更加准确的明白timeout的值。

那么apache的连接超时时间到底是多少?是什么参数控制呢?

答:apache没有最大连接超时时间,也没有控制连接超时的参数。因为apache是在TCP/IP模型的应用层。

那么服务端是什么控制了浏览器和apache之间的最大连接超时时间呢?

答:linux

测试得到的结论

apache没有最大连接超时时间,也没有控制连接超时的参数。因为apache是在TCP/IP模型的应用层。

linux的连接超时

在linux的系统配置中可以到关于连接时间的有这两个参数。

#sysctl -a|grep time

一个是限制FIN_WAIT状态的超时时间,

一个是限制keepalive连接的超时时间。

结论

linux的默认配置下也没控制浏览器和apache连接超时的参数,只有通过linux的防火墙才能控制apache和浏览器之间连接的最大连接时间。

PHP的操作超时

打开php.ini可以看到两个参数。

max_execution_time:一个php程序执行的最长时间。

max_input_time:一个表单提交的最长时间。

这两个值很重要。我们做个测试:

服务端 虚拟机上的Centos
客户端 本机上IE6浏览器
服务端地址 192.168.212.128
客户端地址 192.168.212.1
访问的文件index.php
<?php   
for($i = 0;;$i++){  
 echo date(&#39;H:i:s&#39;,time());  
 echo &#39;<br/>';  
 flush();  
}  
?>
max_execution_time 30

访问index.php。

<?php   
for($i = 0;;$i++){  
 echo date(&#39;H:i:s&#39;,time());  
 echo &#39;<br/>';  
 flush();  
}  
?>


30秒后IE死掉了。为什么呢?答:index.php中有死循环。执行到max_execution_time=30秒后php停止了操作。浏览器这边死掉了。

总结

如果从头到尾看完上面的内容,会得出如下结论:

1,在客户端,浏览器控制着浏览器和apache的最大连接超时时间。

2,在服务端(不打开防火墙),linux和apache都不能控制最大连接超时时间,只有php或者mysql等运行程序通过控制自身的执行时间来控制浏览器和apache的最大连接超时时间。

3,在服务端(打开防火墙),linux上的防火墙和php,mysql等共同控制浏览器和apache的最大连接超时时间。

4,这里的浏览器和apache的最大连接超时时间包括TCP连接中的所有状态超时时间的综合。

更多Apache的相关技术文章,请访问Apache教程栏目进行学习!

위 내용은 시간 초과로 PHP가 Apache에 연결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Apache로 알려진 것 : 주요 기능 및 업적Apache로 알려진 것 : 주요 기능 및 업적Apr 18, 2025 am 12:03 AM

Apachehttpserver는 모듈 식 설계, 높은 확장 성, 보안 및 성능 최적화를 위해 웹 서버 분야의 리더가되었습니다. 1. 모듈 식 설계는 다른 모듈을로드하여 다양한 프로토콜과 기능을 지원합니다. 2. 소규모에서 대형 응용 프로그램의 요구에 적응할 수있는 확장 성. 3. Security는 Mod_Security 및 여러 인증 메커니즘을 통해 웹 사이트를 보호합니다. 4. 성능 최적화는 데이터 압축 및 캐싱을 통해 로딩 속도를 향상시킵니다.

아파치의 지속적인 관련성 : 현재 상태를 조사합니다아파치의 지속적인 관련성 : 현재 상태를 조사합니다Apr 17, 2025 am 12:06 AM

Apachehttpserver는 안정성, 확장 성 및 풍부한 생태계 때문에 현대 웹 환경에서 중요합니다. 1) 안정성과 신뢰성은 고 가용성 환경에 적합합니다. 2) 넓은 생태계는 풍부한 모듈과 확장을 제공합니다. 3) 구성 및 관리가 쉽고 초보자에게도 신속하게 시작할 수 있습니다.

Apache의 인기 : 성공의 이유Apache의 인기 : 성공의 이유Apr 16, 2025 am 12:05 AM

Apache의 성공 이유는 다음과 같습니다. 1) 강력한 오픈 소스 커뮤니티 지원, 2) 유연성 및 확장 성, 3) 안정성 및 신뢰성 및 4) 광범위한 응용 시나리오. Apache는 커뮤니티 기술 지원 및 공유를 통해 유연한 모듈 식 설계 및 구성 옵션을 제공하여 다양한 요구에 따라 적응성과 안정성을 보장하며 개인 블로그에서 대기업 웹 사이트에 이르기까지 다양한 시나리오에서 널리 사용됩니다.

아파치의 유산 : 무엇이 유명한가?아파치의 유산 : 무엇이 유명한가?Apr 15, 2025 am 12:19 AM

apachebecamefamousduetoitsopen-sourcenature, modulardesign, andstrongcommunitysupport.1) itsopen-sourcemodelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandelandermisveAcelicenseencouraged.2) themodularArchiteCturealLowedForeXextenseVecustOmization.3) avibrantcommunit

아파치의 장점 : 성능과 유연성아파치의 장점 : 성능과 유연성Apr 14, 2025 am 12:08 AM

Apache의 성능과 유연성은 웹 서버에서 눈에 띄게 만듭니다. 1) 성능 장점은 효율적인 처리 및 확장성에 반영되며, 이는 다중 프로세스 및 다중 스레드 모델을 통해 구현됩니다. 2) 유연성은 모듈 식 설계 및 구성의 유연성에서 비롯되며, 모듈을로드하고 요구 사항에 따라 서버 동작을 조정할 수 있습니다.

Apache80 포트가 점유 된 경우해야 할 일Apache80 포트가 점유 된 경우해야 할 일Apr 13, 2025 pm 01:24 PM

Apache 80 포트가 점유되면 솔루션은 다음과 같습니다. 포트를 차지하고 닫는 프로세스를 찾으십시오. 방화벽 설정을 확인하여 Apache가 차단되지 않았는지 확인하십시오. 위의 방법이 작동하지 않으면 Apache를 재구성하여 다른 포트를 사용하십시오. Apache 서비스를 다시 시작하십시오.

Apache를 시작할 수없는 문제를 해결하는 방법Apache를 시작할 수없는 문제를 해결하는 방법Apr 13, 2025 pm 01:21 PM

다음과 같은 이유로 Apache가 시작할 수 없습니다. 구성 파일 구문 오류. 다른 응용 프로그램 포트와 충돌합니다. 권한 문제. 기억이 없습니다. 프로세스 교착 상태. 데몬 실패. Selinux 권한 문제. 방화벽 문제. 소프트웨어 충돌.

Apache에서 CGI 디렉토리를 설정하는 방법Apache에서 CGI 디렉토리를 설정하는 방법Apr 13, 2025 pm 01:18 PM

Apache에서 CGI 디렉토리를 설정하려면 다음 단계를 수행해야합니다. "CGI-BIN"과 같은 CGI 디렉토리를 작성하고 Apache 쓰기 권한을 부여하십시오. Apache 구성 파일에 "Scriptalias"지시록 블록을 추가하여 CGI 디렉토리를 "/cgi-bin"URL에 매핑하십시오. Apache를 다시 시작하십시오.

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를 무료로 생성하십시오.

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

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

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구