PHP マルチスレッド内部マルチスレッド インスタンス分析、PHP マルチスレッド インスタンス分析_PHP チュートリアル
PHP マルチスレッド内部マルチスレッドの例分析、PHP マルチスレッド例分析
この記事では、PHP マルチスレッドの内部マルチスレッドの使用状況を分析します。参考のためにみんなで共有してください。詳細は以下の通りです
コードをコピーします コードは次のとおりです:
クラスHttp_MultiRequest
{
// 並行してクロールされる URL のリスト
プライベート $urls = array();
//カールオプション
プライベート $オプション;
//コンストラクター
関数 __construct($options = array())
{
$this->setOptions($options);
}
//URLリストを設定します
関数 setUrls($urls)
{
$this->urls = $urls;
$this を返します;
}
// オプションを設定します
関数 setOptions($options)
{
$options[CURLOPT_RETURNTRANSFER] = 1;
If (isset($options['HTTP_POST']))
{
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $options['HTTP_POST']);
unset($options['HTTP_POST']);
}
If (!isset($options[CURLOPT_USERAGENT]))
{
$options[CURLOPT_USERAGENT] = 'Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.1; SV1;)';
}
If (!isset($options[CURLOPT_FOLLOWLOCATION]))
{
$options[CURLOPT_FOLLOWLOCATION] = 1;
}
If (!isset($options[CURLOPT_HEADER]))
{
$options[CURLOPT_HEADER] = 0;
}
$this->options = $options;
}
//すべてのコンテンツを並行して取得します
関数exec()
{
If(空($this->urls) || !is_array($this->urls))
{
false を返す;
}
$curl = $data = array();
$mh =curl_multi_init();
foreach($this->urls as $k =>$v)
{
$curl[$k] = $this->addHandle($mh, $v);
}
$this->execMulitHandle($mh);
foreach($this->urls as $k =>$v)
{
$data[$k] =curl_multi_getcontent($curl[$k]);
curl_multi_remove_handle($mh, $curl[$k]);
}
curl_multi_close($mh);
$data を返す;
}
// 1 つの Web ページのコンテンツのみを取得します。
関数execOne($url)
{
if (empty($url)) {
false を返す;
}
$ch =curl_init($url);
$this->setOneOption($ch);
$content =curl_exec($ch);
curl_close($ch);
$content を返す;
}
//内部関数、特定のハンドルのオプションを設定します
プライベート関数 setOneOption($ch)
{
curl_setopt_array($ch, $this->オプション);
}
// 新しい並列クロール ハンドルを追加します
プライベート関数 addHandle($mh, $url)
{
$ch =curl_init($url);
$this->setOneOption($ch);
curl_multi_add_handle($mh, $ch);
戻り $ch;
}
//並列実行 (この書き方はよくある間違いですが、私は今でもここでこの書き方、この書き方を使っています
)
//小さなファイルをダウンロードするとカップが 100% を占める可能性があり、このサイクルは 100,000 回以上実行されます
//これは原理を理解していないために発生する典型的なエラーです。このエラーは、PHP 公式ドキュメントでよく見られます。 )
プライベート関数 execMulitHandle($mh)
{
$running = null;
{
をしてください
curl_multi_exec($mh, $running);
} while ($running > 0);
}
}
/*以下は上記のクラスのテストの例です:*/
$urls = array("http://baidu.com", "http://baidu.com", "http://baidu.com", "http://baidu.com", "http:// baidu.com"、"http://baidu.com"、"http://www.google.com"、"http://www.sina.com.cn"、);
$m = 新しい Http_MultiRequest();
$t = マイクロタイム(true);
$m->setUrls($urls);
//パラレルフェッチ (パラレルフェッチ):
$data = $m->exec();
$Parallel_time = microtime(true) - $t;
echo $Parallel_time . "n";
$t = マイクロタイム(true);
//シリアルフェッチ(シリアルフェッチ):
foreach ($urls を $url として)
{
$data[] = $m->execOne($url);
}
$serial_time = microtime(true) - $t;
エコー $serial_time . "n";
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
