suchen
HeimBetrieb und InstandhaltungApacheWie stellt PHP mit Timeout eine Verbindung zu Apache her?

Wie stellt PHP mit Timeout eine Verbindung zu Apache her?

Vorwort

Um das Verbindungs-Timeout-Problem zwischen dem Browser und Apache zu verstehen, müssen Sie zunächst den Keep verstehen des http -alive-Attributs. Lassen Sie uns zunächst kurz Keep-Alive vorstellen. Eine ausführlichere Einführung finden Sie online.

Sowohl Browser als auch Apache basieren auf dem http-Protokoll. Die gängige Erklärung für das Keep-Alive-Attribut im http-Protokoll ist, dass der Browser und Apache zum ersten Mal eine TCP-Verbindung herstellen. Nach der Datenübertragung wird die TCP-Verbindung nicht sofort getrennt, sondern wartet weiterhin darauf nächste Anfrage. Die Verbindung wird nach einer gewissen Zeit (Keep-Alive-Zeit) getrennt.

Führen wir einen Test durch, um den TCP-Verbindungsstatus von Apache zu überprüfen, wenn die Keep-Alive-Unterstützung aktiviert und die Keep-Alive-Unterstützung deaktiviert wird.

服务端 虚拟机上的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="Wie stellt PHP mit Timeout eine Verbindung zu Apache her?" >  
  

Deaktivieren Sie zunächst den Keep-Alive-Parameter von Apache und öffnen Sie httpd.conf.

Öffnen Sie den Browser, um auf Apache zuzugreifen. Verwenden Sie den Befehl netstat, um den Verbindungsstatus zu überprüfen.

#netstat –nt|grep –i ’80′

Da die lokale Zugriffsgeschwindigkeit sehr hoch ist, kann nur der TIME_WAIT-Status erfasst werden. Warum hat die test.html-Webseite vier Links?

Wenn wir uns den Inhalt von test.html ansehen, können wir erkennen, dass es Folgendes gibt:

1, main.css-Datei

2, main.js-Datei

3, Haupt-JPG-Bild

4, die test.html-Datei selbst

also gibt es vier Verbindungen.

Sehen Sie sich den Verbindungsstatus an, nachdem Sie die Keep-Alive-Unterstützung von Apache deaktiviert haben.

Starten Sie den Server neu, greifen Sie mit dem Browser auf test.html zu und überprüfen Sie die Verbindung.

#service httpd restart

#netstat –nt|grep –i ’80′

Sie können sehen, dass es nur eine Verbindung gibt. Und der Verbindungsstatus ist ESTABLISHED. Wir setzen keepAlliveTimeout=15 in httpd.conf, sodass die Verbindung 15 Sekunden nach Verbindungsaufbau geschlossen wird.

Schlussfolgerungen aus dem Test

Wenn Sie das Keep-Alive-Attribut von Apache deaktivieren, werden alle Dateien auf der aufgerufenen Seite (test.html im obigen Beispiel) einschließlich js, css, bilder usw. müssen eine neue TCP-verbindung herstellen. Es gibt so viele Verbindungen wie referenzierte Dateien. Die genaue Anzahl der Dateien kann mit dem BUG-Tool von Firefox angezeigt werden.

Die unteren 11 Anfragen im obigen Bild geben die Anzahl der Dateien an, auf die auf der Webseite verwiesen werden muss.

Wenn Sie das Keep-Alive-Attribut von Apache aktivieren, stellen alle Dateien auf der aufgerufenen Seite (test.html im obigen Beispiel), einschließlich JS, CSS, Bilder usw., nur eine TCP-Verbindung her und Übertragen Sie alle Dateien der Reihe nach. Warten Sie auf KeepAliveTimeout =15 Sekunden, nachdem alle Daten übertragen wurden, bevor Sie die Verbindung schließen.

Im Internet gesehene Referenzen:

Wenn Apache derzeit auf 100 Benutzerbesuche pro Sekunde reagiert, KeepAliveTimeOut=5, dann beträgt die Anzahl der httpd-Prozesse 100 * 5 = 500 (Prefork-Modus). Wenn ein httpd-Prozess 5 MB Speicher verbraucht, sind es 500 * 5 MB = 2500 MB = 2,5 GB. Natürlich stellten Apache und Client nur 100 TCP-Verbindungen her. Wenn Ihr Speicher groß genug ist, wird die Systemlast nicht zu hoch sein. Wenn Ihr Speicher weniger als 2,5 GB beträgt, erhöht die Verwendung von Swap die Belastung der CPU.

Jetzt schalten wir KeepAlive aus, Apache antwortet immer noch auf 100 Benutzerbesuche pro Sekunde, da wir Bilder, JS, CSS usw. getrennt haben und es nur 1 Anfrage pro Besuch gibt. Zu diesem Zeitpunkt betrug die Anzahl der httpd-Prozesse 100*1=100 und der verwendete Speicher 100*5M=500M. Zu diesem Zeitpunkt stellten Apache und Client auch 100 TCP-Verbindungen her. Die Leistung hat sich stark verbessert.

Browser-Verbindungszeitlimit

Jeder Browser verfügt über ein Standard-Verbindungszeitlimit. Die Standardzeit für IE6 beträgt 60 Minuten.

Dieser Wert kann über die Registrierung geändert werden.

1. Öffnen Sie die Registrierung: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings.

2. Fügen Sie ein Element mit einem DWORD-Wert hinzu, nennen Sie es „ReceiveTimeout“ und setzen Sie es auf 1000. Die Standardeinheit dieses Werts ist Millisekunden und die hier eingestellte Zeit beträgt 1 Sekunde.

Starten Sie, wenn der Browser mit dem Zugriff auf die Website beginnt, und schließen Sie die Verbindung nach 1 Sekunde. (Der eingestellte Wert ist etwas extrem, aber für die Anzeige praktisch).

Starten Sie den Browser neu, um auf die Website zuzugreifen.

服务端 虚拟机上的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教程栏目进行学习!

Das obige ist der detaillierte Inhalt vonWie stellt PHP mit Timeout eine Verbindung zu Apache her?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Für welche Apache ist bekannt: Schlüsselfunktionen und ErfolgeFür welche Apache ist bekannt: Schlüsselfunktionen und ErfolgeApr 18, 2025 am 12:03 AM

ApachehttpServer ist zu einem führenden Anbieter von Webservern für modulare Design, hohe Skalierbarkeit, Sicherheits- und Leistungsoptimierung geworden. 1. Modulares Design unterstützt verschiedene Protokolle und Funktionen durch das Laden verschiedener Module. 2. SCHWISSEN SIE SCHABE, um sich an die Bedürfnisse kleiner bis großer Anwendungen anzupassen. 3. Security schützt die Website über Mod_security und mehrere Authentifizierungsmechanismen. 4. Die Leistungsoptimierung verbessert die Ladegeschwindigkeit durch Datenkomprimierung und Caching.

Die dauerhafte Relevanz von Apache: Untersuchung des aktuellen StatusDie dauerhafte Relevanz von Apache: Untersuchung des aktuellen StatusApr 17, 2025 am 12:06 AM

Apachehttpserver ist in modernen Webumgebungen aufgrund seiner Stabilität, Skalierbarkeit und reichhaltiger Ökosystem wichtig. 1) Stabilität und Zuverlässigkeit machen es für Umgebungen mit hoher Verfügbarkeit geeignet. 2) Ein breites Ökosystem liefert reichhaltige Module und Erweiterungen. 3) Einfach zu konfigurieren und verwalten und kann auch für Anfänger schnell gestartet werden.

Apache Popularität: Gründe für seinen ErfolgApache Popularität: Gründe für seinen ErfolgApr 16, 2025 am 12:05 AM

Die Gründe für den Erfolg von Apache sind: 1) Starke Open -Source -Community -Unterstützung, 2) Flexibilität und Skalierbarkeit, 3) Stabilität und Zuverlässigkeit und 4) eine breite Palette von Anwendungsszenarien. Durch den technischen Support und die Freigabe von Community bietet Apache flexible modulare Design- und Konfigurationsoptionen, um die Anpassungsfähigkeit und Stabilität unter verschiedenen Anforderungen zu gewährleisten, und wird in verschiedenen Szenarien, von persönlichen Blogs bis zu großen Unternehmenswebsites, häufig verwendet.

Apache's Vermächtnis: Was hat es berühmt gemacht?Apache's Vermächtnis: Was hat es berühmt gemacht?Apr 15, 2025 am 12:19 AM

ApacheBecameFamousDuetoitsopen-Sourcenature, Modulardesign und StrongCommunitySupport.1) Itsopen-SourcemodelandPermissiveapachelicenseCouragedWidesspreadadoption.2) themodulararchitectureAllowedaNivessiveCustAtaTaptability.3) ivibrantcommunitcustomizingability

Die Vorteile von Apache: Leistung und FlexibilitätDie Vorteile von Apache: Leistung und FlexibilitätApr 14, 2025 am 12:08 AM

Die Leistung und Flexibilität von Apache machen es auf einem Webserver hervor. 1) Leistungsvorteile spiegeln sich in der effizienten Verarbeitung und Skalierbarkeit wider, die durch Multi-Process- und Multi-Thread-Modelle implementiert werden. 2) Flexibilität beruht auf der Flexibilität des modularen Designs und der Konfiguration, sodass Module geladen und das Serververhalten entsprechend den Anforderungen angepasst werden können.

Was tun, wenn der Port Apache80 belegt istWas tun, wenn der Port Apache80 belegt istApr 13, 2025 pm 01:24 PM

Wenn der Port -80 -Port der Apache 80 besetzt ist, lautet die Lösung wie folgt: Finden Sie den Prozess, der den Port einnimmt, und schließen Sie ihn. Überprüfen Sie die Firewall -Einstellungen, um sicherzustellen, dass Apache nicht blockiert ist. Wenn die obige Methode nicht funktioniert, konfigurieren Sie Apache bitte so, dass Sie einen anderen Port verwenden. Starten Sie den Apache -Dienst neu.

So lösen Sie das Problem, dass Apache nicht gestartet werden kannSo lösen Sie das Problem, dass Apache nicht gestartet werden kannApr 13, 2025 pm 01:21 PM

Apache kann aus den folgenden Gründen nicht beginnen: Konfigurationsdatei -Syntaxfehler. Konflikt mit anderen Anwendungsports. Berechtigungen Ausgabe. Aus dem Gedächtnis. Prozess -Deadlock. Dämonversagen. Selinux -Berechtigungen Probleme. Firewall -Problem. Software -Konflikt.

So setzen Sie das CGI -Verzeichnis in ApacheSo setzen Sie das CGI -Verzeichnis in ApacheApr 13, 2025 pm 01:18 PM

Um ein CGI-Verzeichnis in Apache einzurichten, müssen Sie die folgenden Schritte ausführen: Erstellen Sie ein CGI-Verzeichnis wie "CGI-bin" und geben Sie Apache-Schreibberechtigungen. Fügen Sie den Block "scriptalias" -Richtungsblock in die Apache-Konfigurationsdatei hinzu, um das CGI-Verzeichnis der URL "/cgi-bin" zuzuordnen. Starten Sie Apache neu.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)