#推奨マニュアル:php完全独習マニュアル
##PHP処理マルチスレッド
# Notes
1、php5.3 以降、スレッドセーフなバージョンです。 Apache と php で使用されるコンパイラは一貫している必要があります。
2. phpinfo() を通じてスレッド セーフが有効になっている場合、それはスレッド セーフ バージョンです。 3. phpinfo() で Compiler 項目を表示することで、使用されているコンパイラを知ることができます。私のものはMSVC9 (Visual C 2008)です。私の使用環境
32ビットwindows xp sp3、wampserver2.2d(php5.3.10-vc9 apache2.2.21-vc9)。
1. pthreads 拡張機能のダウンロード
私の環境では、pthreads-2.0.8-5.3-ts-vc9-x86 をダウンロードしました。
2.0.8 は pthread のバージョンを表します。 5.3 は PHP のバージョンを表します。 ts は、php にはスレッドセーフなバージョンが必要であることを意味します。 vc9 は、php を Visual C 2008 コンパイラでコンパイルする必要があることを意味します。 x86 は 32 ビットを意味します2. pthreads 拡張機能をインストールします
1. php_pthreads.dll をディレクトリ bin\php\ext\ にコピーします。 (私のパスは D:\wamp\bin\php\php5.3.10\ext です) 2. pthreadVC2.dll をディレクトリ bin\php\ にコピーします。 (私のパスは D:\wamp\bin\php\php5.3.10 です)
プロンプトを追加します。
Windows システムでは、pthreadVC2.dll のパスを PATH 環境変数に追加する必要があります。 [マイ コンピュータ] --->マウスの右ボタン ---> [プロパティ] ---> [詳細設定] ---> 環境変数 --->システム変数 --->Path という名前のパスを検索 ---> ;編集--->変数値の末尾に pthreadVC2.dll のフル パスを追加します。
3. pthreads 拡張機能をテストします
class AsyncOperation extends \Thread { public function __construct($arg){ $this->arg = $arg; } public function run(){ if($this->arg){ printf("Hello %s\n", $this->arg); } } } $thread = new AsyncOperation("World"); if($thread->start()) $thread->join(); ?>上記のコードを実行すると、Hello World が表示され、pthreads 拡張機能が正常にインストールされたことが示されます。
2.curl_multi_init()
<?php echo date("Y-m-d H:m:s",time()); echo " "; echo floor(microtime()*1000); echo "<br>"; $mtime = explode(" ", microtime()); $mtime = $mtime[1].($mtime[0] * 1000); $mtime2 = explode(".", $mtime); $mtime = $mtime2[0]; echo $mtime; echo "<br>"; $urls = array( 'http://www.webkaka.com', 'http://www.webkaka.com', 'http://www.webkaka.com', 'http://www.webkaka.com', 'http://www.webkaka.com'); print_r(async_get_url($urls)); // [0] => example1, [1] => example2 echo "<br>"; echo date("Y-m-d H:m:s",time()); echo " "; echo floor(microtime()*1000); echo "<br>"; $mtime_ = explode(" ", microtime()); $mtime_ = $mtime_[1].($mtime_[0] * 1000); $mtime2_ = explode(".", $mtime_); $mtime_ = $mtime2_[0]; echo $mtime_; echo "<br>"; echo $mtime_ - $mtime; function async_get_url($url_array, $wait_usec = 0) { if (!is_array($url_array)) return false; $wait_usec = intval($wait_usec); $data = array(); $handle = array(); $running = 0; $mh = curl_multi_init(); // multi curl handler $i = 0; foreach($url_array as $url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return don't print curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 302 redirect curl_setopt($ch, CURLOPT_MAXREDIRS, 7); curl_multi_add_handle($mh, $ch); // 把 curl resource 放进 multi curl handler 里 $handle[$i++] = $ch; } /* 执行 */ do { curl_multi_exec($mh, $running); if ($wait_usec > 0) /* 每个 connect 要间隔多久 */ usleep($wait_usec); // 250000 = 0.25 sec } while ($running > 0); /* 读取资料 */ foreach($handle as $i => $ch) { $content = curl_multi_getcontent($ch); $data[$i] = (curl_errno($ch) == 0) ? $content : false; } /* 移除 handle*/ foreach($handle as $ch) { curl_multi_remove_handle($mh, $ch); } curl_multi_close($mh); return $data; } ?>curl_multi_init()について
一般的に、curl_multi_init() の使用を検討するのは次のような場合です。 、目的は、複数の URL を 1 つずつリクエストするのではなく、同時にリクエストすることです。それ以外の場合は、curl_init() が必要になります。ただし、curl_multi を使用すると、過剰な CPU 消費や Web ページの一時停止などの現象が発生する場合があります。curl_multi によって引き起こされる Web ページの一時停止の問題を解決する方法を参照してください。
curl_multi を使用する手順は次のように要約されます。 ステップ 1:curl_multi_init を呼び出すステップ 2:curl_multi_add_handle をループ内で呼び出す必要なものこのステップで注意すべき点は、curl_multi_add_handle の 2 番目のパラメータが、curl_init のサブハンドルであることです。 ステップ 3:curl_multi_exec を継続的に呼び出しますステップ 4:curl_multi_getcontent を周期的に呼び出して、必要に応じて結果を取得しますステップ 5:curl_multi_remove_handle を呼び出し、単語ハンドルごとに呼び出しますcurl_closeステップ 6:curl_multi_close を呼び出す##各関数の説明:##curl_multi_init()カールバッチハンドルリソース。
curl_multi_add_handle()
個々の Curl ハンドル リソースを Curl バッチ セッションに追加します。 curl_multi_add_handle() 関数には 2 つのパラメータがあり、最初のパラメータは CURL バッチ ハンドル リソースを表し、2 番目のパラメータは個別の CURL ハンドル リソースを表します。
curl_multi_exec()
curl バッチ ハンドルを解析します。curl_multi_exec() 関数には 2 つのパラメータがあります。最初のパラメータはバッチ ハンドル リソースを表し、2 番目のパラメータは最初のパラメータは参照値を持つパラメータで、処理する必要がある残りの個別のカール ハンドル リソースの数を示します。
curl_multi_remove_handle()
curl バッチ ハンドル リソースのハンドル リソースを削除します。curl_multi_remove_handle() 関数には 2 つのパラメータがあります。最初のパラメータは、curl バッチ ハンドル リソースを表します、2 番目のパラメータは別のカール ハンドル リソースを表します。
curl_multi_close()
バッチ ハンドル リソースを閉じます。
curl_multi_getcontent()
CURLOPT_RETURNTRANSFER が設定されている場合、取得された出力のテキスト ストリームを返します。
curl_multi_info_read()
現在解析されているcurlの関連する送信情報を取得します。
おすすめ関連記事:
1.PHP でマルチスレッドを実装する方法
2.PHP でマルチスレッドを実装する 3 つの方法
関連ビデオの推奨:
1.Dugu Jiijian (4)_PHP ビデオ チュートリアル
推奨チュートリアル: PHP ビデオ チュートリアル
以上がPHP がマルチスレッドを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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