ホームページ >バックエンド開発 >PHPチュートリアル >PHP は大規模なコレクションを同期します。非常に難しい問題です。初心者は入場できません。よろしくお願いします

PHP は大規模なコレクションを同期します。非常に難しい問題です。初心者は入場できません。よろしくお願いします

WBOY
WBOYオリジナル
2016-06-23 14:06:072029ブラウズ

1. このプログラムは myip.cn/wanben.net に似ており、彼の Web サイトは wanben.net のすべての情報を 3 秒以内に収集できます。

2. PHP を介して wanben.net からすべての情報を収集することもできますが、速度が遅すぎます。たとえば、
Web サイトのタイトルを収集
Alexa 情報を収集
ドメイン名情報を収集
サーバー情報を収集

を書きましたPHP を介したプログラムでは、すべてのコードを順番に実行する必要があります。したがって、時間がかかり、すべての収集を完了するには約 15 秒かかります

そして、myip.cn は上記と同じ量の情報を収集します。これには約 3 秒かかります。


専門家の方、php+ajax で行われるのか、php 同期バッチ収集で行われるのか答えてください。原理を教えてください。

私のウェブサイト wanben.net のコレクションはすべて自分で作成したもので、大規模な高速収集を実現する必要があります。値を返します。




ディスカッションへの返信 (解決策)

1. このプログラムは myip.cn/wanben.net に似ており、彼の Web サイトは wanben.net のすべての情報を 3 秒で収集できます。

2. PHP を通じて wanben.net からすべての情報を収集することもできますが、速度が遅すぎます。たとえば、
Web サイトのタイトルを収集
Alexa 情報を収集
ドメイン名情報を収集
サーバー情報を収集

プログラム I php を介して記述されているため、すべてのコードは順番に実行する必要があります。そのため、時間がかかり、すべての収集を完了するには約 15 秒かかります

そして myip...

データ収集には CURL を使用することをお勧めします


PHP の cURL ライブラリの簡単な紹介: クロール Webページ、POST データなど


この記事の概要 PHP の cURL ライブラリを使用するいくつかの方法を学びます。 cURL は、Web ページのコンテンツの取得、Web ページのコンテンツの取得、XML ファイルの取得とデータベースへのインポートなどに使用できる強力な PHP ライブラリです。
PHP の cURL ライブラリを使用して、Web ページを簡単かつ効果的にクロールします。スクリプトを実行して、クロールした Web ページを分析するだけで、必要なデータをプログラムで取得できます。リンクから部分データを取得する場合でも、XML ファイルを取得してデータベースにインポートする場合でも、単に Web ページのコンテンツを取得する場合でも、cURL は強力な PHP ライブラリです。この記事では主にこのPHPライブラリの使い方について説明します。

cURL 設定を有効にする

まず、PHP でこのライブラリが有効になっているかどうかを確認する必要があります。この情報は、php_info() 関数を使用して取得できます。

??phpphpinfo();??




Web ページに次の出力が表示される場合は、cURL ライブラリが有効になっていることを意味します。

これが表示された場合は、PHP を設定してこのライブラリを有効にする必要があります。 Windows プラットフォームを使用している場合、php.ini ファイルの設定を変更し、php_curl.dll を見つけて、前のセミコロンのコメントをキャンセルするだけです。以下に示すように:

//Uncomment extension=php_curl.dll



Linux を使用している場合は、編集時に PHP を再コンパイルする必要があります。 -curl」パラメータをconfigureコマンドに追加します。

小さな例

すべての準備ができたら、次の小さなルーチンを実行します:

??php
// cURL オブジェクトを初期化します
$curl =curl_init() // クロールする必要がある URL を設定します
curl_setopt($curl, CURLOPT_URL, 'http://cocre.com');

// ヘッダーを設定します
curl_setopt($curl, CURLOPT_HEADER, 1); // cURL パラメータを設定し、結果を保存するように要求します文字列または画面に出力します。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

// cURL を実行し、Web ページをリクエストします
$data =curl_exec($curl)

// URL リクエストを閉じます

//取得したデータを表示
var_dump($data);


データのPOST方法

上記はWebページをクロールするコードで、以下はデータを特定のWebページにPOSTするコードです。フォーム処理 URL http://www.example.com/sendSMS.php があり、2 つのフォーム フィールド (1 つは電話番号、もう 1 つはテキスト メッセージのコンテンツ) を受け入れることができるとします。

??php$phoneNumber = '13912345678';$message = 'このメッセージは、curl と php によって生成されました';$curlPost = 'pNUMBER=' . urlencode($message) 。 . '&SUBMIT=Send';$ch =curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);$data =curl_exec();curl_close($ch);??



上からプログラムでは、GET メソッドの代わりに CURLOPT_POST を使用して HTTP プロトコルの POST メソッドを設定し、CURLOPT_POSTFIELDS で POST データを設定していることがわかります。

プロキシサーバーについて

以下はプロキシサーバーの使用方法の例です。強調表示されたコードに注目してください。コードは非常に単純なので、これ以上説明する必要はありません。

??php $ch =curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');$data =curl_exec();curl_close($ ch);??


SSL と Cookie について

HTTPS プロトコルである SSL については、CURLOPT_URL 接続の http:// を https:// に変更するだけです。もちろん、サイトを検証するために設定できる CURLOPT_SSL_VERIFYHOST というパラメーターもあります。

Cookie に関しては、次の 3 つのパラメータを知っておく必要があります:

CURLOPT_COOKIE、対面セッションで Cookie を設定します

CURLOPT_COOKIEJAR、セッション終了時に Cookie を保存します

CURLOPT_COOKIEFILE、Cookie ファイル。

HTTP サーバー認証

最後に、HTTP サーバー認証について見てみましょう。

??php
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch) , CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, '[ユーザー名]:[パスワード]')

$data =curl_exec($ch);


その他のコンテンツについては、をご覧ください。関連する cURL マニュアルを参照してください。



公式 CURL 中国語ドキュメント:

curl_setopt


投稿者に、ネットワーク環境が悪い場合、Web サイトのデータ量が多い場合、または PHP プログラム構造の実行に時間がかかる場合、どうすればよいかを尋ねます。 PHP の実行がタイムアウトしたらどうしますか?

投稿者 mywaster からの引用 返信:

1. プログラムは myip.cn/wanben.net に似ており、彼の Web サイトは wanben.net のすべての情報を 3 秒以内に収集できます。

2. PHP を通じて wanben.net からすべての情報を収集することもできますが、速度が遅すぎます。たとえば、
Web サイトのタイトルを収集
Alexa 情報を収集
ドメイン名情報を収集
サーバー情報を収集

プログラム I PHP を介して記述されているため、すべてのコードは順番に実行する必要があります。そのため、時間がかかり、すべてのコレクションを完了するには約 15 秒かかります...

言い忘れましたが、コレクションは PHP CURL を使用して作成しました。質問に従って答えてください


コレクション Web サイトのタイトル
Collect Alexa 情報の収集
ドメイン名情報の収集
サーバー情報の収集

同時に実行したい場合はどうすればよいですか? ? ? ? ? ? ? ? ? ?


拡張機能、マルチスレッド、クラウド コンピューティングを作成できる能力がある

1 階の skyaspnet からの返信を引用:
投稿者 mywaster からの返信を引用:

1. プログラムは myip.cn/ に似ています。 wanben.net の Web サイトは、「wanben.net のすべての情報を 3 秒以内に収集する」にあります。


2. PHP を通じて wanben.net からすべての情報を収集することもできますが、速度が遅すぎます。たとえば、
Web サイトのタイトルを収集
Alexa 情報を収集
ドメイン名情報を収集
サーバー情報を収集

プログラム I php で記述し、順次実行するには...



コレクション Web サイトのタイトル
これは非常に簡単で、データを取得した後に直接正規化できます。

Alexa 情報を収集する
これには、データを取得するために Alexa にクエリを送信する必要があります。提案は、TITLE を取得する操作から分離されています。

ドメイン名情報を収集する
このステップではクエリ コマンドを送信する必要もあります。個別に実行することをお勧めします

サーバー情報を収集する
一部のヘッダー情報など、サーバー情報のごく一部のみを取得でき、そのほとんどは取得できません高速化したい場合は、一連の操作を特定の方法で関連付けて段階的に実行すると大幅に速度が向上します

試してみました
検索wanben初めて myip.cn で .com を検索するのに 16 秒かかりました (もちろん、コンピューターの表示は少し遅いです)
myip.cn を再度検索するのにかかる時間はわずか 2 秒です

したがって、myip.cn が使用していることは確かですキャッシュがあり、後から見る検索結果もすべてキャッシュから取得されるので早いです。

私はそれを自分で解決しました

アイデアをありがとう、私のスペースで解決策を見てみましょう
http://hi.baidu.com/dalianufo/blog/item/c70ef1d9a1a92a3f10df9b0a.html

http:// www.chaiba.com 原理も非常に高速です


http://www.chayiba.com これ

URL の下にサブリンクがある場合はどうなりますか?たとえば、http://news.ifeng.com/mil/ には、以下のサブコラムとサブリンクがあります。どうすればよいですか?

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