Как реализовать управляемый событиями код в PHP? - PullRequest
4 голосов
/ 17 января 2012

Возможно ли реализовать управляемую событиями программу на 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 Ответ

3 голосов
/ 17 января 2012

В PHP есть только один поток.Поэтому делать что-то полезное во время ожидания какого-либо события в PHP невозможно.

Некоторые обходные пути доступны, но, вероятно, не очень надежны, особенно если вы планируете писать переносимый код.Я бы предположил, что обходные пути рискованны, поскольку в языке нет концепции параллелизма.Поэтому, вероятно, лучше всего написать многопоточный код на другом языке (Java, Scala,…) и использовать PHP только для отображения подготовленных результатов (если вообще используется PHP для таких задач).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...