奇妙な問題に遭遇しました。誰かが私を助けてくれることを願っています。Web サイトからキーワードを削除する multiCurl スパイダーを PHP で作成しましたが、奇妙なパフォーマンスの問題が発生しています。
スパイダーを実行してサイトの最初の数レベルをスクレイピングすると、完了するまでに約 2 分かかりますが、これは私の目的にとってはそれほど大きな問題ではありません。奇妙なのは、同じスクリプトでスパイダーを次々と実行しようとすると、何らかの理由でランタイムがバルーン化することです。たとえば、7 つのサイトで順次実行する場合、14 分 (1 サイトあたり 2 分) かかると予想されますが、実行には 45 分以上かかります。各サイトを個別にテストしたところ、実際には平均して 2 分以下でしたが、順番に実行するとほぼ 1 時間かかりました。
メモリの問題と関係があるのではないかと考えたので、スクリプトの実行中にキーワード データを格納する APC キャッシュを実装しました。問題は、タスク マネージャー (私は Windows 7 で XAMPP を実行しています) を見ると、Apache サーバーは CPU の 46K/23% をはるかに超えていないようで、私のコンピューターの他のすべては問題なく動作します。 .
よく調べて、適切なすべてのハンドラーができるだけ早く閉じられていること、大きな変数が設定解除/キャッシュされていることを確認しましたが、実行に予想よりも 3 倍の時間がかかる理由についてまだ頭を悩ませています。相次ぐサイト。私は pcntl を使用してスパイダーをフォークしてプロセスを分離しようとするルートをたどろうとしています (Linux のサム ドライブ インストールを試してみます)。アプリケーションのパフォーマンス ヒット。ありがとう!