2012-01-16 2 views
4

PHP로 이벤트 구동 형 프로그램을 구현할 수 있습니까?PHP에서 이벤트 기반 코드를 구현하는 방법은 무엇입니까?

자바 스크립트와 같은 것입니다.

예를 들어 소켓 요청의 성공 응답을 기다리는 대신 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

가능한 [Event-Driven PHP Framework?] (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에는 단 하나의 스레드 만 있습니다. 따라서 PHP에서 어떤 이벤트를 기다리는 동안 유용한 일을하는 것은 불가능합니다.

일부 해결 방법은 사용 가능하지만 신뢰할 수는 없습니다. 특히 휴대용 코드를 작성할 때 특히 그렇습니다. 언어에 동시성의 개념이 없기 때문에 해결 방법이 위험하다고 생각합니다. 따라서 다른 언어 (Java, Scala, ...)로 멀티 스레드 코드를 작성하고 준비된 결과를 표시하기 위해 PHP를 사용하는 것이 가장 좋습니다 (PHP를 그러한 문제에 사용하는 경우).

관련 문제