[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: retrieve realtime data mssql with php
Janek
Как можно создать websocket сервер, который проверял бы базу данных MSSQL с последующей передачей данных на вебсайт клиента?
SorokinFilipp265
можно задать вопрос поисковой системе "websocket сервер на php"
Janek
Цитата (SorokinFilipp265 @ 10.07.2019 - 18:19)
можно задать вопрос поисковой системе "websocket сервер на php"

Нужен не просто websocket сервер на php, а нуженwebsocket сервер на php, получающий сообщения от базы данных MSSQL.
brevis
Цитата (Janek @ 11.07.2019 - 09:51)
websocket сервер на php, получающий сообщения от базы данных MSSQL

В этой фразе для тебя непонятно все или только часть?
Если умеешь получать сообщения от базы данных MSSQL -- легко можешь сделать websocket сервер с помощью этой штуки http://websocketd.com
Если непонятно все -- гугли каждый пункт по отдельности.

_____________
Чатик в телеге
Janek
Цитата (brevis @ 11.07.2019 - 11:45)
В этой фразе для тебя непонятно все или только часть?
Если умеешь получать сообщения от базы данных MSSQL -- легко можешь сделать websocket сервер с помощью этой штуки http://websocketd.com
Если непонятно все -- гугли каждый пункт по отдельности.

Спасибо, почитаю http://websocketd.com/. Скорее всего мне непонятна большая часть этой темы. Соединяться из PHP c MSSQL умею.
Если сделать не сервер, а запустить на сервере php файл с бесконечным циклом вебсокета, то сколько соединений выдержит такой php файл?
brevis
Цитата (Janek @ 11.07.2019 - 13:35)
Если сделать не сервер, а запустить на сервере php файл с бесконечным циклом вебсокета, то сколько соединений выдержит такой php файл?

Зависит от конфигурации сервера.

Есть вот еще такая замечательная штука: https://github.com/ratchetphp/Ratchet
Твою задачу с ее помощью можно решить в несколько строк (причем, взятых почти полностью из example):
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;

class Notify implements MessageComponentInterface {
protected $clients;

public function __construct() {
$this->clients = new \SplObjectStorage;
}

public function onOpen(ConnectionInterface $conn) {
$this->clients->attach($conn);
}

public function onMessage(ConnectionInterface $from, $msg) {

}


public function onClose(ConnectionInterface $conn) {
$this->clients->detach($conn);
}

public function onError(ConnectionInterface $conn, \Exception $e) {
$conn->close();
}

public function notifyClients($data) {
foreach($this->clients as $client) {
$client->send($data);
}
}
}


$notify = new Notify();
$loop = React\EventLoop\Factory::create();

$app = new Ratchet\App('localhost', 8081, '0.0.0.0', $loop);

$loop->addPeriodicTimer(5, function () use ($notify) {
$newDataFromMSSQL = date('Y-m-d H:i:s');
if ($newDataFromMSSQL) {
$notify->notifyClients($newDataFromMSSQL);
}
}
);

$app->route('/notify', $notify, array('*'));
$app->run();
var conn = new WebSocket('ws://localhost:8081/notify');
conn.onmessage = function(e) { console.log(e.data); };

Осталось реализовать получение данных из MSSQL (вместо $newDataFromMSSQL = date('Y-m-d H:i:s');) и proof of concept готов.

_____________
Чатик в телеге
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.