ホームページ  >  記事  >  バックエンド開発  >  サーバー下のプログラムは、curl を使用してネットワーク リクエストを作成します。Web サイト全体が停止する問題を解決する方法を教えてください。

サーバー下のプログラムは、curl を使用してネットワーク リクエストを作成します。Web サイト全体が停止する問題を解決する方法を教えてください。

WBOY
WBOYオリジナル
2016-06-13 13:13:03864ブラウズ

サーバー上のプログラムは、curl を使用してネットワーク要求を行います。Web サイト全体が停止する問題を解決するにはどうすればよいですか?
前回の投稿で明確にできなかったので、もう一度言います。

a.php b.php c.php の 3 ページ。

a.php ページを開いた後。
a.php は ajax を使用して b.php をリクエストします。
b.php はデータ収集にcurlを使用します。たとえば、zhidao.baidu.com/xx.html
を収集すると、現時点では baidu.com の反映が遅くなります。 curl はこのリクエストをすぐに完了できません。それで。ウェブサイト全体がフリーズしてしまいます。現時点では、a.php c.php を開くと、ajax リクエストが完了するまでそこでスタックされます。
最善の解決策は何ですか?

今、オリジナルの投稿者のみを表示する機能に似たものを書いています。パターンはほぼ同じです。
www.onlylz.com では Web サイト全体がスタックしているわけではないようです

-----解決策----------- - --------
CURLOPT_TIMEOUT、タイムアウトを設定しますか?
ノンブロッキングですか?
http://blog.csdn.net/linvo/article/details/5956629
------解決策------------------
その ajax リクエストが完了しました。非同期モードに設定できます。
データ収集に特別な要件がない場合は、定期的に収集してデータベースに保存できます。それから取得します
------解決策---------
この時点で、a.php c を開きます。 .php は、ajax リクエストが完了するまでそこに留まります。
どのブラウザを使用していますか? どのようなサーバー システムですか?

ブラウザにとって、各リクエストは無関係であり、同時に開始できるリクエストは 1 つだけというわけではありません。
サーバーの場合、各リクエストに割り当てられるリソースは独立しており、同時に処理できるリクエストは 1 つだけというわけではありません。
したがって、ブロッキングが発生した場合、その原因は PHP のセッション ファイル ロックなどのプログラム自体によってのみであると考えられます。
Web サイトの c.php ページと a.php ページの両方でセッションが有効になっている場合、サーバー上の他のプロセスがファイル ロックが解除されるまで待機することになるため、ブラウザは、長い間。
私が言ったことと同じなら、あなたも解決策を知っていると思います

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。