サーバー上のプログラムは、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 ページの両方でセッションが有効になっている場合、サーバー上の他のプロセスがファイル ロックが解除されるまで待機することになるため、ブラウザは、長い間。
私が言ったことと同じなら、あなたも解決策を知っていると思います