検索
ホームページ運用・保守ApachePHPがタイムアウトでApacheに接続する方法

PHPがタイムアウトでApacheに接続する方法

Jun 29, 2019 pm 01:37 PM
apachephp接続がタイムアウトしました

PHPがタイムアウトでApacheに接続する方法

まえがき

ブラウザと Apache の間の接続タイムアウトの問題を理解するには、まず keep を理解する必要があります。 http -alive 属性の。まずはキープアライブについて簡単に紹介しましょう。より詳細な説明はオンラインで見つけることができます。

ブラウザと Apache はどちらも http プロトコルに基づいています。 http プロトコルのキープアライブ属性の一般的な説明は、ブラウザと Apache が初めて TCP 接続を確立し、データが送信された後、TCP 接続はすぐには切断されず、接続が完了するまで待機し続けるというものです。次のリクエスト。一定時間 (キープアライブ時間) が経過すると、接続は切断されます。

Apache がキープアライブ サポートをオンにしたときとオフにしたときの、Apache の TCP 接続ステータスを確認するテストを行ってみましょう。

##サーバー アドレス##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'
サーバー 仮想マシン上の Centos
クライアント このマシン IE6 上ブラウザ
クライアント アドレス

4 つの接続が表示されますが、ローカルのアクセス速度が非常に速いため、TIME_WAIT ステータスのみが取得されます。 test.html Web ページにリンクが 4 つあるのはなぜですか?

test.html の内容を見ると、

1、main.css ファイル

2、main.js ファイル

# があることがわかります。 ##3、main.jpg 絵

4、独自の test.html ファイル

したがって、4 つのリンクがあります。

Apache のキープアライブ サポートをオフにした後の接続ステータスを見てみましょう。

サーバーを再起動し、ブラウザでtest.htmlにアクセスし、接続を確認してください。

#service httpd restart

#netstat –nt|grep –i '80'

接続が 1 つだけあることがわかります。そして接続ステータスはESTABLISHEDになります。 httpd.conf で keepAlliveTimeout=15 を設定しているため、接続が確立されてから 15 秒後に接続が閉じられます。

テストの結論

Apache の keep-alive 属性をオフにすると、アクセスしたページ (上記の例では test.html) 内のすべてのファイルが、 js、css、画像などを含むものは、新しい TCP 接続を確立する必要があります。参照ファイルの数と同じ数の接続が存在します。ファイルの特定の数は、Firefox の BUG ツールを使用して表示できます。

上の図の下の 11 個のリクエストは、Web ページ内で参照する必要があるファイルの数です。

Apache の keep-alive 属性を有効にすると、アクセスされたページ (上記の例では test.html) 内のすべてのファイル (js、css、画像などを含む) は TCP 接続のみを確立し、すべてのファイルを順番に転送します。すべてのデータが送信された後、KeepAliveTimeout = 15 秒待ってから接続を閉じます。

インターネットで見られる参考情報:

現在、Apache が 1 秒あたり 100 のユーザー アクセスに応答する場合、KeepAliveTimeOut=5、httpd プロセスの数は 100 になります。 * 5=500 (prefork モード) httpd プロセスが 5M のメモリを消費すると、500*5M=2500M=2.5G になります。もちろん、Apache とクライアントは 100 個の TCP 接続しか確立しませんでした。メモリが十分に大きければシステム負荷はそれほど高くありませんが、メモリが 2.5G 未満の場合はスワップが使用され、頻繁にスワップを切り替えると CPU の負荷が増加します。

KeepAlive をオフにします。画像、js、css などを分離し、訪問ごとにリクエストが 1 つだけあるため、Apache は引き続き 1 秒あたり 100 のユーザー訪問に応答します。この時の 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 秒です。

ブラウザが Web サイトへのアクセスを開始すると開始し、1 秒後に接続を閉じます。 (設定値は少し極端ですが、表示には便利です)。

ブラウザを再起動して Web サイトにアクセスします。

サーバー

仮想マシン上の 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 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Apacheの役割:HTML、CSS、JavaScriptなどにサービスを提供していますApacheの役割:HTML、CSS、JavaScriptなどにサービスを提供していますApr 19, 2025 am 12:09 AM

Apacheは、HTML、CSS、JavaScript、その他のファイルを提供できます。 1)仮想ホストとドキュメントルートディレクトリを構成する、2)受信、プロセス、返品要求、3).htaccessファイルを使用してURL書き換えを実装する、4)アクセス許可、表示、テスト構成の表示、5)パフォーマンスを最適化するためにキープライブの設定を有効にし、ファイルを圧縮し、ファイルを圧縮し、ファイルを圧縮し、設定します。

Apacheが知られていること:主要な機能と成果Apacheが知られていること:主要な機能と成果Apr 18, 2025 am 12:03 AM

Apachehttpserverは、モジュラー設計、高いスケーラビリティ、セキュリティ、パフォーマンスの最適化のために、Webサーバーの分野のリーダーになりました。 1.モジュラー設計は、さまざまなモジュールをロードすることにより、さまざまなプロトコルと関数をサポートします。 2。小規模から大規模なアプリケーションのニーズに適応するために高度にスケーラブルです。 3.セキュリティは、mod_securityと複数の認証メカニズムを通じてWebサイトを保護します。 4.パフォーマンスの最適化により、データの圧縮とキャッシュを介した速度が向上します。

Apacheの永続的な関連性:現在のステータスを調べますApacheの永続的な関連性:現在のステータスを調べますApr 17, 2025 am 12:06 AM

Apachehttpserverは、その安定性、スケーラビリティ、豊富なエコシステムのため、最新のWeb環境で依然として重要です。 1)安定性と信頼性により、高可用性環境に適しています。 2)幅広いエコシステムは、豊富なモジュールと拡張機能を提供します。 3)構成と管理が簡単で、初心者でも迅速に開始できます。

Apacheの人気:成功の理由Apacheの人気:成功の理由Apr 16, 2025 am 12:05 AM

Apacheの成功の理由には、1)強力なオープンソースのコミュニティサポート、2)柔軟性とスケーラビリティ、3)安定性と信頼性、4)幅広いアプリケーションシナリオ。 Apacheは、コミュニティの技術サポートと共有を通じて、柔軟なモジュラー設計と構成オプションを提供し、さまざまなニーズの下で適応性と安定性を確保し、個人のブログから大企業Webサイトまでさまざまなシナリオで広く使用されています。

Apacheの遺産:何が有名になったのですか?Apacheの遺産:何が有名になったのですか?Apr 15, 2025 am 12:19 AM

apachebecamefamousdueToitsopen-sourcenature、modulardesign、andstrongcommunitysupport.1)itseopen-sourcemodemodemissiveapachelicensewidedoption.2)hemodulararchitectureallowed edizadaptability.3)avibrantcomunit.3)

Apacheの利点:パフォーマンスと柔軟性Apacheの利点:パフォーマンスと柔軟性Apr 14, 2025 am 12:08 AM

Apacheのパフォーマンスと柔軟性により、Webサーバーで際立っています。 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許可の問題。ファイアウォールの問題。ソフトウェアの競合。

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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境