ホームページ  >  記事  >  バックエンド開発  >  PHPマルチスレッドクラス実装事例

PHPマルチスレッドクラス実装事例

黄舟
黄舟オリジナル
2017-11-11 14:16:512397ブラウズ

以前、PHP マルチスレッドと非同期呼び出しの実装方法を紹介しましたが、WEB サーバーを介して実装されたマルチスレッドは、マルチスレッドの一部の効果を模倣するだけであり、実際のマルチスレッドではないことは周知のとおりです。しかし、何があっても、それでも私たちのニーズの一部は満たせるので、今日は PHP マルチスレッド クラスを実装します。

php マルチスレッドクラス:

/** 
* @title: PHP多线程类(Thread) 
* @version: 1.0 
* 
* PHP多线程应用示例: 
* require_once 'thread.class.php'; 
* $thread = new thread(); 
* $thread->addthread('action_log','a'); 
* $thread->addthread('action_log','b'); 
* $thread->addthread('action_log','c'); 
* $thread->runthread(); 
* 
* function action_log($info) { 
* $log = 'log/' . microtime() . '.log'; 
* $txt = $info . "rnrn" . 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn"; 
* $fp = fopen($log, 'w'); 
* fwrite($fp, $txt); 
* fclose($fp); 
* } 
*/ 
class thread { 
var $hooks = array(); 
var $args = array(); 
function thread() { 
} 
function addthread($func) 
{ 
$args = array_slice(func_get_args(), 1); 
$this->hooks[] = $func; 
$this->args[] = $args; 
return true; 
} 
function runthread() 
{ 
if(isset($_GET['flag'])) 
{ 
$flag = intval($_GET['flag']); 
} 
if($flag || $flag === 0) 
{ 
call_user_func_array($this->hooks[$flag], $this->args[$flag]); 
} 
else 
{ 
for($i = 0, $size = count($this->hooks); $i < $size; $i++) 
{ 
$fp=fsockopen($_SERVER[&#39;HTTP_HOST&#39;],$_SERVER[&#39;SERVER_PORT&#39;]); 
if($fp) 
{ 
$out = "GET {$_SERVER[&#39;PHP_SELF&#39;]}?flag=$i HTTP/1.1rn"; 
$out .= "Host: {$_SERVER[&#39;HTTP_HOST&#39;]}rn"; 
$out .= "Connection: Closernrn"; 
fputs($fp,$out); 
fclose($fp); 
} 
} 
} 
} 
}

Usage メソッド、コードは次のとおりです:

$thread = new thread(); 
$thread->addthread(&#39;func1&#39;,&#39;info1&#39;); 
$thread->addthread(&#39;func2&#39;,&#39;info2&#39;); 
$thread->addthread(&#39;func3&#39;,&#39;info3&#39;); 
$thread->runthread();

命令:

addthread() はスレッド関数を追加します。最初のパラメータは関数名で、その後のパラメータはパラメーター (オプション) が渡されます 関数のパラメーターを指定します

runthread() は実行スレッドの関数です。

概要:

この記事では、PHP マルチスレッド クラスを共有します。したがって、今後はそれほど多くのことを記述する必要はありません。次回必要になったときにコードを直接呼び出すことができます。お役に立てれば幸いです。

関連する推奨事項:

PHP で非同期マルチスレッドを実装する方法


PHP マルチスレッド シミュレーション実装の 3 つの方法の紹介


PHP マルチスレッド実装例


PHP マルチスレッドを実装する方法 — シェル

以上がPHPマルチスレッドクラス実装事例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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