Для сокетов Unix нам не нужно использовать socket_connect
.
Вот очень простой рабочий пример с отправителем и получателем:
sender.php
<?php
$socket = socket_create(AF_UNIX, SOCK_DGRAM, 0);
socket_sendto($socket, "Hello World!", 12, 0, "/tmp/myserver.sock", 0);
echo "sent\n";
?>
receiver.php
<?php
$file = "/tmp/myserver.sock";
unlink($file);
$socket = socket_create(AF_UNIX, SOCK_DGRAM, 0);
if (socket_bind($socket, $file) === false) {
echo "bind failed";
}
if (socket_recvfrom($socket, $buf, 64 * 1024, 0, $source) === false) {
echo "recv_from failed";
}
echo "received: " . $buf . "\n";
?>
Обратите внимание, что только получателю необходимо привязаться к адресу (файлу сокета unix), а затем использовать socket_recvfrom
. Отправитель просто звонит socket_sendto
.