ホームページ >バックエンド開発 >PHPチュートリアル >PHP は収集タスクを実行し、その結果クラッシュが発生しますが、各実行は非常に高速です。

PHP は収集タスクを実行し、その結果クラッシュが発生しますが、各実行は非常に高速です。

WBOY
WBOYオリジナル
2016-06-13 12:54:21895ブラウズ

[ヘルプ] 収集タスクを実行すると PHP がクラッシュしますが、各実行は非常に高速です。
PHP は収集タスクを実行します。プログラムを作成する手順は
です。 1. まずデータベースから URL を抽出します
2.php は、URL タイトル title をリモートで取得し、http 経由でリモート URL をダウンロードします。
3.ダウンロード後、別のWebサイトB、httpのデータをダウンロードします。
4.ダウンロード後、別局Cのデータを再度ダウンロードします(http)。
5. 各レコードは、4 つのリモート Web サイト A、B、C、D から合計データをダウンロードし、データ テーブル内の対応するレコードを更新して、次のレコードをループします。


結果として生じる現象は次のとおりです:
ページを 1 回更新すると、10 項目が読み込まれ続けますが、どれも完了しません (3 時間経過しても、どれも完了していません)。
しかし、1ステップずつ操作するだけならすぐに完了します。理解するのが難しく、コードは変更されていません。


------解決策---------
PHPがタイムアウトしているのか、それともメモリがいっぱいなのでしょうか?

error.log を開いてエラー ログを表示しますか?

この種の収集プログラムを作成する場合、最も重要なことは、プログラムの実行時にエラーを処理する方法を決定することです。
------解決策----------------------
それらのほとんどはコードの問題です...コードがありません真実はありません
-----解決策--------------------------
書くファイルを各ファイルに記録し、どのステップが停止したかを確認してください。
------解決策---------
引用:
各ステップでログをファイルに書き込み、どのステップが停止したかを確認します。

正解
-----解決策--------------------------
あなた
一度に 10 個のコードを完成させることはできません
そして
簡単な 1 つずつコード

違いは何ですか?

-----解決策---------
サーバーはどこですか? ?まだ DNS を解析しないでください。

-----解決策--------------------------------
サイト A ということですが、これもローカルですか?まだ集めないでください。 siteA の対応するスクリプトを直接実行するにはどのくらい時間がかかりますか?
------解決策---------
特定のコードを指定していませんが、指定できます。与えない 具体的な提案をしてください
しかし、たとえコードが与えられたとしても、それを読んでテストする気分ではないかもしれません
このようなアプリケーションに関する兄の個人的な意見:
1. 通常、ページには、ホームページに戻るリンク、コラムに戻るリンクなどがあります。
削除しないと無限ループになりやすいので注意が必要です
2. ページ収集プログラムは単一である必要があります
つまり、一度実行して 1 ページを収集します
3. 収集制御プログラムは、ページ収集プログラム
をスケジュールするために使用されます。 fsockopen を使用してページ収集プログラムを開いてから戻ることができます。ターゲット ページの URL はパラメータとしてページ収集プログラムにのみ渡されます
。 これはマルチプロセス システムをシミュレートします
4. 具体的には、実装時にデータベースを仲介し、ページから抽出したすべてのURLをデータベースに保存します(もちろん重複は排除する必要があります)
収集制御プログラムはデータベースを読み取り、収集を継続するかどうかと各収集の規模を決定します
-----解決策------ --
引用:
ダウンロードした dedecms クラスを使用します

dedecms 統合クラスは使用せず、クラスを変更してみてください。
同様の関数を持つ関数またはクラスをオンラインで探してください。
------解決策---------
引用:
引用: 引用: ダウンロードした dedecms クラスが使用されます
dedecms 統合クラスは使用せず、クラスを変更してみてください。
同様の関数を持つ関数またはクラスをオンラインで探してください。

実際、discuzのcurlやfsocketも動作せず、サーバーによっては異常アクセスと判断されてしまいます。 dede カテゴリのみが最も成功しています。 。他のものも試してみましたが、やはり非常に遅かったです。
……


あなたの顔は誇りに満ちています...先輩、あなたは不滅になりました~~

コレクションのカールを自分で書いてカプセル化するのはどれほど難しいことでしょう... コレクションでの問題は、実際にはさまざまな規則性の分析と校正です
-----解決策------。 -------------
つまり、二次開発はそれほど難しいものではありません。どのような機能が欲しいですか? URL と要件を投稿してください。関数の作成をお手伝いします。
------解決策------------------
収集速度に影響を与える主な原因はネットワークの問題です。
まず ping を実行して、応答時間がどれくらいかを確認します。

dedecms クラスを使用せず、curl を使用して自分で作成します。非常に簡単です。
リクエストごとにタイムアウトを設定します。自分の PC を使用して実行するのではなく、高度な構成を備えたサーバーを見つけて実行し、複数のプロセスを開いてタスクを分類すると、効率が数倍向上します。
------解決策---------
引用:
一部のドメイン名は存在しないホストを指しています

これらのドメイン名を指定して、ヘッダー ジャンプがあるかどうかを確認するか、www を削除してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。