搜尋
首頁運維Apachephp如何與apache連接逾時

php如何與apache連接逾時

Jun 29, 2019 pm 01:37 PM
apachephp連線逾時

php如何與apache連接逾時

前言

#要理解瀏覽器與apache之間的連線逾時問題,需要先明白http的keep -alive屬性。先簡單介紹keep-alive,可以從網路上找到更詳細的介紹。

瀏覽器和apache都是基於http協定的。而http協定中的keep-alive屬性通俗的解釋就是瀏覽器和apache第一次建立TCP連接,傳輸完數據不會立刻斷開這個TCP連接,而是繼續等待下一個請求。維持一段時間(keep-alive-time)後才會斷開連線。

下面要做個測試,查看apache在開啟keep-alive支援和關閉keep-alive支援時候的TCP連線狀態。

服務端 虛擬機上的Centos
用戶端 本機上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。

開啟瀏覽器存取apache。使用netstat指令查看連線狀態。

#netstat –nt|grep –i ’80′

可以看到四個連接,因為本地存取速度很快,只能抓取到TIME_WAIT得狀態。那一個test.html網頁為什麼會有四個連線呢?

看test.html的內容可以知道有:

1,main.css 檔案

2,mian.js   檔案

3,main. jpg 圖片

4,本身的test.html檔

所以有四個連接。

再看看關閉apache的keep-alive支援後的連線狀態。

重啟伺服器,瀏覽器存取test.html,在查看連線。

#service httpd restart

#netstat –nt|grep –i ’80′

可以看到只有一個連接。而且這個連線狀態是ESTABLISHED。我們在httpd.conf中設定了keepAlliveTimeout=15,所以連線建立後15秒後才關閉連線。

測試得到的結論

如果關閉apache的keep-alive屬性,訪問的頁面中的(上例中test.html)所有文件,包括js, css,圖片等等都要建立新的TCP連線。有多少引用檔案就建立多少個連線。具體多少個文件可以使用火狐的BUG工具查看。

上圖中最下面的11個請求就是該網頁中需要引用的檔案數。

如果開啟apache的keep-alive屬性,訪問的頁面中的(上例中的test.html)所有文件,包括js,css,圖片等等只建立一個TCP連接,按照順序傳輸所有數據。所有資料傳輸完等待KeepAliveTimeout =15秒後再關閉該連線。

網路上看到的參考:

假如當前Apache每秒回應100個用戶訪問,KeepAliveTimeOut=5,此時httpd進程數就是100* 5=500個(prefork模式),一個httpd進程消耗5M記憶體的話,就是500*5M=2500M=2.5G,誇張吧?當然,Apache與Client只進行了100次TCP 連線。如果你的記憶體夠大,系統負載不會太高,如果你的記憶體小於2.5G,就會用到Swap,頻繁的Swap切換會加重CPU的Load。

現在我們關掉KeepAlive,Apache仍然每秒響應100個用戶訪問,因為我們將圖片、js、css等分離出去了,每次訪問只有1個request,此時httpd的進程數是100*1=100個,使用記憶體100*5M=500M,此時Apache與Client也是進行了100次TCP連線。性能卻提升了太多。

瀏覽器的連線逾時

每個瀏覽器都有預設的連線逾時時間。 IE6的預設時間為60分鐘。

這個值可以透過註冊表修改。

1,開啟登錄:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings。

2,增加一個DWORD值的項,命名為ReceiveTimeout,設定1000。該值的預設單位是毫秒,這裡設定的1秒時間。

從瀏覽器開始造訪網站開始,1秒後關閉連線。 (設的值有點極端,但是方便展示)。

重啟瀏覽器訪問網站。

服務端 虛擬機上的Centos
用戶端 本機上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在網絡開發中的作用:開拓技術May 01, 2025 am 12:12 AM

Apache在Web開發中的作用包括靜態網站託管、動態內容服務、反向代理與負載均衡。 1.靜態網站託管:Apache配置簡單,適合託管靜態網站。 2.動態內容服務:通過與PHP等結合,提供動態內容。 3.反向代理與負載均衡:作為反向代理,分發請求到多個後端服務器,實現負載均衡。

阿帕奇死了嗎?揭穿神話阿帕奇死了嗎?揭穿神話Apr 30, 2025 am 12:18 AM

Apache并未走向没落。1.Apache仍是稳定可靠的选择,持续更新如2.4版本的性能优化和安全增强。2.它支持广泛的模块化扩展,配置简单,但高并发时不如Nginx高效。3.在实际应用中,Apache通过mod_rewrite等模块提升SEO性能。4.Apache可与Docker等现代技术融合,提升部署和管理效率。5.通过调整配置和使用优化模块,Apache的性能可显著提升。

Apache:配置和管理Web服務器Apache:配置和管理Web服務器Apr 29, 2025 am 12:18 AM

配置和管理ApacheHTTPServer的步驟包括:1.基本配置:設置服務器名稱、監聽端口和文檔根目錄。 2.高級配置:設置虛擬主機、啟用SSL加密和URL重寫。 3.性能優化:調整KeepAlive設置和使用緩存。 4.解決常見問題:檢查配置文件語法和優化服務器參數。通過這些步驟,你可以確保Apache服務器穩定運行並優化其性能。

Apache在行動中:Web服務器和Web應用程序Apache在行動中:Web服務器和Web應用程序Apr 28, 2025 am 12:21 AM

ApacheHTTPServer的主要功能包括模塊化設計、虛擬主機配置和性能優化。 1.模塊化設計通過加載不同模塊實現功能,如SSL加密和URL重寫。 2.虛擬主機配置允許在一個服務器上運行多個網站。 3.性能優化通過調整參數如ServerLimit和KeepAlive提升性能。

Apache的適應性:倖存於不斷發展的網絡Apache的適應性:倖存於不斷發展的網絡Apr 27, 2025 am 12:01 AM

Apache通過模塊化設計、與新技術兼容以及性能優化保持適應性和生命力。 1.模塊化設計允許定制功能,如mod_rewrite用於URL重寫。 2.兼容雲計算和容器化技術,如在Docker中運行。 3.引入新模塊如mod_http2支持HTTP/2協議。 4.通過配置文件調整和啟用緩存進行性能優化。

Apache的功能:為什麼它仍然是一個受歡迎的選擇Apache的功能:為什麼它仍然是一個受歡迎的選擇Apr 26, 2025 am 12:16 AM

ApacheHTTPServer仍然受歡迎的原因是其模塊化架構、虛擬主機支持和高性能與可靠性。 1)模塊化架構允許通過模塊擴展功能,如mod_rewrite和mod_ssl。 2)虛擬主機功能支持在一個服務器上託管多個網站。 3)多進程模型確保在不同環境下的高性能和穩定性。

使用Apache:構建和託管網站使用Apache:構建和託管網站Apr 25, 2025 am 12:07 AM

Apache是一種開源Web服務器軟件,廣泛用於網站託管。安裝步驟:1.在Ubuntu上使用命令行安裝;2.配置文件位於/etc/apache2/apache2.conf或/etc/httpd/conf/httpd.conf。通過模塊擴展,Apache支持靜態和動態內容託管,優化性能和安全性。

Apache:它仍然使用嗎?查看Web服務器趨勢Apache:它仍然使用嗎?查看Web服務器趨勢Apr 24, 2025 am 12:17 AM

Apache仍在被廣泛使用,但市場份額已從2010年的50%以上降至2023年的不到30%。它的優勢在於穩定性和可靠性,適合需要這些特性的企業級應用;劣勢是多進程模型在高並發下資源消耗大,Nginx在高並發處理上表現更佳。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。