Памятка. Найдено на php.net по ключевым словам: sockets, php.
Интересно, что схема позволяет быстро создать чат, например, для общения двух администраторов, настраивающих одну станцию. Предваряя вопросы и ответы на тему - «а зачем оно надо» и «такие чаты уже есть» - скажу, что это лишь возможность, а пользоваться или нет - ваше дело.
Допустим, есть модель ситуации:
- Сервер с VNC и ssh.
- На него заходят два человека из разных точек, и им требуется messaging.
Решение:
- На сервере запускается скрипт php, слушающий сокет через tcp (через ssh udp работать не будет. Поправьте, если ошибаюсь.).
Допустим, выбран порт 1117.
Запуск из консоли сервера:
php php_server_php
$server = stream_socket_server('tcp://127.0.0.1:1117');
while (1){
$socket = stream_socket_accept($server);
$ptk=stream_socket_recvfrom($socket, 15);
if ( $ptk > 0) {
echo $ptk;
}
}
fclose($socket);
fclose($server);
- Если нужно отправлять со своего компьютера сообщения, то через ssh осуществляется проброс порта.
Примерно так:
ssh -L 1117:127.0.0.1:1117 -N -l user remote_server_ip
- Отправка сообщений из консоли:
echo 'Test' > /dev/tcp/127.0.0.1/1117
P.S. Без ssh можно использовать сервер udp.
$socket = stream_socket_server("udp://127.0.0.1:1117", $errno, $errstr, STREAM_SERVER_BIND);
if (!$socket) {
die("$errstr ($errno)");
}
do {
$pkt = stream_socket_recvfrom($socket, 1, 0, $peer);
echo "$peer\n";
echo $pkt;
stream_socket_sendto($socket, date("D M j H:i:s Y\r\n"), 0, $peer);
} while ($pkt !== false);
Отправка сообщений по протоколу udp из консоли:
echo 'Test' > /dev/udp/127.0.0.1/1117
P.P.S Примеры взяты с php.net. Чуть-чуть модифицированы.
Ниже картинка, подтверждающая, что выглядит это довольно сносно: https://ibb.co/Ltnmn4R