многопоточность — Как передать некоторые данные в работающий поток в PHP?

Допустим, я создаю поток, отсоединяю его от основного процесса и запускаю.

Итак, после того, как поток отсоединен, как можно передать некоторые фрагменты данных, такие как strings, или же intс уже запущенным потоком?

редактировать
В основном я пытаюсь реализовать протокол WS:

<?php
// Pseudo-Code
class LongRunningThread extends \Thread {
private $handshakeReq;

public function __construct(Request $handshakeRequest) {
$this->handshakeReq = $handshakeRequest;
}

public function run() {
// Do handshake
// But do not exit, because after the handshake is done the socket connection needs to be maintained.
// Probably some trigger which notifies that a new message is here and the message arrives <automagically>
if(trigger) {
$message = $message;
$this->onNewWsMessage($message);
}
}

public function onNewWsMessage(string $rawMessage) {
// Process the message...
}
}

$stream = stream_socket_server(sprintf("tcp://%s:%d",
"localhost",
1337
), $errno, $errmsg);

// Boiler plate, and connection acceptance (blah blah blah)
// $client is the the accepted connection
$message = fread($client, 4096);

// Cannot pass the $client in here because the instability of resources with threads
// as passing them here, apparently converts them to <bool> false
$longRunningThread = new \LongRunningThread($message);
$longRunningThread->start() && $longRunningThread->join();

Я нашел различные ответы, связанные с передачей данных в работающий поток, но я не смог найти ничего специально для PHP,

я использую Pthreads

0

Решение

Фактический вопрос довольно расплывчатый.
То, что вы хотите сделать, зависит от моего понимания IPC (межпроцессное взаимодействие) и может быть реализовано несколькими способами (насколько мне известно, наиболее распространенным является:http://php.net/manual/en/function.stream-socket-pair.php).
Я хотел бы предложить, однако, что вы могли бы использовать какую-то систему очередей и опросов, как RabbitMQ передавать сообщения. Это обеспечит некоторые накладные расходы, но это хорошо известное и широко используемое решение

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]