Проблема при попытке печатать сообщения, полученные от большего количества клиентовPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проблема при попытке печатать сообщения, полученные от большего количества клиентов

Сообщение Anonymous »

Позвольте мне объяснить проблему: я создаю систему, которая использует датчики, способные читать некоторые данные, тогда каждый датчик должен будет отправлять эти данные на сервер, который будет распечатать каждое сообщение, полученное в новой строке на странице.class Sensor extends Thread implements ISensor
{
....

public function readValue(){
$this->value = rand( -15 , 40 );
$this->timestamp = date('Y-m-d H:i:s');
}

public function run(){
$number = 0;
$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Couldn't create socket");
$this->connectionResult = socket_connect($this->socket, $this->ip, (int)$this->port) or die("Couldn't connect to server");
while($number requestNumber){
$number = $number + 1;
$this->readValue();
$this->sendData();
sleep($this->frequency);
}
socket_close($this->socket);
}

public function sendData(){
$input = $this->toString();
socket_write($this->socket, $input, strlen($input)) or die ("Impossible send message");
}
< /code>

server.php

set_time_limit (300);
$address = '127.0.0.1';
$port = 19000;

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($sock, $address, $port) or die('Could not bind to address');
socket_listen($sock);

while (true) {
$client = socket_accept($sock);
while (0 != socket_recv($client, $message, 1024, 0))
{
echo $message . "
";
}
socket_close($client);
}
socket_close($sock);
< /code>

Ожидаемый результат заключался в том, что клиенты могут подключаться к серверу и отправлять сообщения (это хорошо работает), в то время как сервер просто распечатана новая строка для каждого полученного сообщения. В разделе) < /p>

< /p>

Первый датчик продолжает отправлять все сообщения, и сервер, которые их корректируют. Датчик, в то время как первый все еще работал, а затем печатайте сообщения, как это должно. Если я удаляю while цикл сервера, просто распечатайте одно отдельное сообщение для каждого датчика.

Подробнее здесь: https://stackoverflow.com/questions/558 ... re-clients
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»