如何在PHP中实现事件驱动的代码?

4

在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
实现代码驱动程序,你读过你自己写的吗? - Matt Ball
可能是事件驱动的PHP框架?的重复问题,请参见https://dev59.com/oWw15IYBdhLWcg3wFHpZ中的事件驱动架构和钩子。 - Matt Ball
2
因为PHP无法进行多线程处理,所以我敢说“不行”。虽然可以使用各种可怕的进程分叉解决方案来模拟这一点,但如果您想要做这种事情,更好的解决方案是使用可以进行多线程处理或更接近模拟它的东西,比如Java或Node.js。 - DaveRandom
@MДΓΓ БДLL - 我看到了那个问题,但回答并没有给出任何提示。 - P K
1个回答

3

PHP 只有一个线程,因此在等待某个事件时无法执行有用的工作。

虽然一些解决方法可用,但可能不太可靠,特别是当您计划编写可移植代码时。我认为这些解决方法很危险,因为该语言没有并发概念。因此,最好使用另一种语言(如 Java、Scala 等)编写多线程代码,并仅在需要时使用 PHP 显示准备好的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接