ホームページ >バックエンド開発 >PHPチュートリアル >phpはマルチスレッドを実装します

phpはマルチスレッドを実装します

WBOY
WBOYオリジナル
2016-08-08 09:32:49920ブラウズ

PHPのSocketメソッドを通じてPHPプログラムのマルチスレッドを実現します。 PHP 自体はマルチスレッドをサポートしていないので、PHP でマルチスレッドを実装するにはどうすればよいでしょうか?考えてみれば、WEB サーバー自体がマルチスレッドをサポートしています。各訪問者は WEB ページにアクセスするときに新しいスレッドを呼び出します。これにより、WEB サーバー独自のスレッドを使用して、PHP がマルチスレッドをサポートしていないという問題を解決できます。

以下は、fsockopen() を通じてソケット接続を確立し、fputs() を使用してメッセージを送信する PHP マルチスレッド クラス コードです:
$fp=fsockopen($_SERVER['HTTP_HOST'],80,&$) errno ,&$errstr,5);
if(!$fp){
echo "$errstr ($errno)
n";
}
fputs($fp,"GET $_SERVER[PHP_SELF] ? flag=1rn");
fclose($fp);


上記のコードは単なるスレッドの操作プロセスです。このような操作をさらにいくつか実行するのがマルチスレッドです。現在の PHP のいわゆるマルチスレッド プログラムはすべてこの方式に基づいています。
完全なスレッドクラスコードを以下に示します。
/**
@title:PHP マルチスレッド クラス (スレッド)
@version:1.0
@author:axgle
*/
クラススレッド {
var $count;
関数スレッド($count=1) {
$this->count=$count;
function _submit( ) {
for($i=1;$i<=$this->count;$i++) $this->_thread()
return true;
function _thread() {
$fp=fsockopen ($_SERVER['HTTP_HOST'],80,&$errno,&$errstr,5);
if(!$fp){
echo "$errstr ($errno)
n";
}
fputs($fp,"GET $_SERVER[PHP_SELF]?flag=1rn");
fclose($fp)
}
function exec($func) {
isset($_GET['flag'])?call_user_func ($func):$this->submit();
}
}
//アプリケーション例:
$th=new thread(10);//10 スレッド
$th->exec('demo' ) ;// カスタム関数を実行します
function Demon() {
fopen('data/'.microtime(),'w')
?>
;
http://codechina.spaces.live.com/blog/cns!bca6db10a924c24!575.entry

上記では、PHP でのマルチスレッドの実装をその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

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