Как записать данные на сокет сервере PHP И передать всем клиентам?
Все еще копаюсь в сокетах. Сокет-сервер для каждого подключения создает отдельное соединение и возвращает каждому только свои данные. А как сделать так чтобы сокет сервер отправлял всем данные которые он получает от всех клиентов?
Т.е если все три клиента напишут Привет, Hi, Hello, все клиенты увидели?
Mysterion я вот это и не могу понять как сохранить связь с одним клиентом, и получать данные от него, и чтобы потом клиент сам отключался.
Я много не понимаю.
Взял простой сервер который на сайте php.
$socket = stream_socket_server("tcp://localhost:15689", $errno, $errstr);
stream_set_blocking($socket,0);
stream_set_timeout($socket,0);
set_time_limit(0);
if (!$socket) {
echo "$errstr ($errno)<br />\n";
} else {
while ($conn = stream_socket_accept($socket)) {
$data=fread($conn,1024);
$save=new Db($data);
fclose($conn);
}
fclose($socket);
}
class Db{
public $host;
public $root;
public $password;
public $database;
public $data;
public function __construct($data)
{
$this->data=$data;
$this->host='localhost';
$this->root='root';
$this->password='12345';
$this->database = 'db';
$this->connect();
}
public function connect(){
$link=mysqli_connect($this->host, $this->root, $this->password, $this->database)
or die("Ошибка " . mysqli_error($link));
$this->insert($link);
}
public function insert($link){
$sql = mysqli_query($link,"INSERT INTO `time_load` (`text`) VALUES ('$this->data')");
$this->closeConnection($link);
}
public function closeConnection($link){
mysqli_close($link);
}
}
У меня прямо из com порта идет пересылка данных на TCP порт
нужно чтобы определял подключение и пока идет поток данных держал это подключение, собирал данные и потом уже вставлял все полученные данные в поле text.
А происходит, что он каждый поток данных видит как новое подключение(я так думаю), и поэтому у меня в бд появляется 100 записей вместо 1.
В идеале нужно:
Есть компьютер, на нем установлен ретранслятор данных из com->tcp(virtual Serial POrts Emulator), когда необходимо начать принять данные из com порта, пользователь заходит в браузер и производит подключение клиента(так как IP один на два клиента), необходимо чтобы сервер показывал данные из эмулятора клиенту:,
Сейчас в Бд не очень хорошо все выглядит , на одну передачу данных 100 записей.
Mysterion, Еще с одной проблемой можешь помочь:
когда перестаю передавать данные на эмуляторе сервер сокет выключается, как сделать чтобы он все время слушал порт?