2012-01-16 18 views
4

PHPでイベント駆動型プログラムを実装することはできますか?PHPでイベントドリブンコードを実装する方法は?

javascriptのようなものです。

例として、ソケット要求の成功応答を待つ代わりに、socket(open_socket)を開き、別のcommand(do_something_else)を実行してみてください。 成功応答を取得した後にcallback_executeを実行します。

//-------------------------------------------------------------------- 
public function open_socket(){ 
$this->socketResource = fsockopen($this->nodeIp,$this->portNumber); 
} 

public function callback_execute(){ 
fputs($this->socketResource,$command); 
} 

public function do_something_else{ xxxxx } 
//-------------------------------------------------------------------- 

Non_blocking_function($obj->open_socket(),$obj->callback_execute()); 
$obj->do_something_else(); 
+1

"コード実行プログラムを実装する"あなた自身の文章を読んだか? –

+0

[イベント駆動型PHPフレームワークの可能な複製?](http://stackoverflow.com/questions/8856530/event-driven-php-framework)http://stackoverflow.com/questions/6846118/event-drivenも参照してください。 -architecture-and-hooks-in-php –

+2

PHPはマルチスレッド化できないので、私は手足に出て「いいえ」と言うでしょう。さまざまな恐ろしいプロセスフォークのソリューションでこれを模倣することは可能ですが、このようなことをしたい場合は、JavaやNode.jsのようにマルチスレッド化することができます。 – DaveRandom

答えて

3

PHPには1つのスレッドしかありません。したがって、PHPでいくつかのイベントを待っている間に便利なことをすることはできません。

一部の回避策は利用可能ですが、おそらくあまり信頼性が低くない可能性があります。特に移植性のあるコードを記述する場合は特にそうではありません。言語には並行性の概念がないため、回避策は危険であると私は思います。したがって、マルチスレッドコードを別の言語(Java、Scala、...)で記述し、準備された結果を表示するためにPHPを使用するのがおそらく最善です。

関連する問題