【问题标题】:How to implement event driven code in PHP?如何在 PHP 中实现事件驱动代码?
【发布时间】:2012-01-16 20:13:56
【问题描述】:

是否可以在 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(); 

【问题讨论】:

  • 《实现代码驱动的程序》,你看过自己写的吗?
  • 因为 PHP 不能是多线程的,所以我要冒险说“不”。可以使用各种可怕的进程分叉解决方案来模仿这一点,但如果你想做这种事情,更好的解决方案是使用可以多线程或更接近模仿它的东西,比如 Java 或 Node.js。
  • @MДΓΓ БДLL - 我看到了这个问题,但答案没有给出任何提示。
  • @MДΓΓ БДLL,编辑了我的错误,感谢指出:)

标签: php javascript events


【解决方案1】:

PHP 中只有一个线程。因此,在 PHP 中无法在等待某些事件的同时做一些有用的事情。

一些变通方法是可用的,但可能不是很可靠——尤其是当您计划编写可移植代码时。我认为解决方法是有风险的,因为该语言没有并发的概念。因此,最好用另一种语言(Java、Scala 等)编写多线程代码,并使用 PHP 来显示准备好的结果(如果完全使用 PHP 来解决此类问题)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-02
    • 2011-06-02
    • 1970-01-01
    • 2010-10-20
    • 2021-03-07
    • 2011-11-20
    • 2013-04-19
    • 2015-05-09
    相关资源
    最近更新 更多