Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Socket Functions : socket_create_pair

socket_create_pair

Creates a pair of indistinguishable sockets and stores them in an array (PHP 4 >= 4.0.7, PHP 5)
bool socket_create_pair ( int domain, int type, int protocol, array &fd )

Example 2292. socket_create_pair() example

<?php
$sockets
= array();
/* Setup socket pair */
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $sockets) === false) {
   echo
"socket_create_pair failed. Reason: ".socket_strerror(socket_last_error());
}
/* Send and Recieve Data */
if (socket_write($sockets[0], "ABCdef123\n", strlen("ABCdef123\n")) === false) {
   echo
"socket_write() failed. Reason: ".socket_strerror(socket_last_error($sockets[0]));
}
if ((
$data = socket_read($sockets[1], strlen("ABCdef123\n"), PHP_BINARY_READ) === false) {
   echo
"socket_read() failed. Reason: ".socket_strerror(socket_last_error($sockets[1]));
}
var_dump($data);

/* Close sockets */
socket_close($sockets[0]);
socket_close($sockets[1]);
?>

Example 2293. socket_create_pair() IPC example

<?php
$ary
= array();
$strone = 'Message From Parent.';
$strtwo = 'Message From Child.';
if (
socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $ary) === false) {
   echo
"socket_create_pair() failed. Reason: ".socket_strerror(socket_last_error());
}
$pid = pcntl_fork();
if (
$pid == -1) {
   echo
'Could not fork Process.';
} elseif (
$pid) {
   
/*parent*/
   
socket_close($ary[0]);
   if (
socket_write($ary[1], $strone, strlen($strone)) === false) {
       echo
"socket_write() failed. Reason: ".socket_strerror(socket_last_error($ary[1]));
   }
   if (
socket_read($ary[1], strlen($strtwo), PHP_BINARY_READ) == $strtwo) {
       echo
"Recieved $strtwo\n";
   }
   
socket_close($ary[1]);
} else {
   
/*child*/
   
socket_close($ary[1]);
   if (
socket_write($ary[0], $strtwo, strlen($strtwo)) === false) {
       echo
"socket_write() failed. Reason: ".socket_strerror(socket_last_error($ary[0]));
   }
   if (
socket_read($ary[0], strlen($strone), PHP_BINARY_READ) == $strone) {
       echo
"Recieved $strone\n";
   }
   
socket_close($ary[0]);
}
?>

Code Examples / Notes » socket_create_pair

derek

This function wraps socketpair()

thegreatall

There is a syntax error in one of the code samples provided, it should look like this:
<?php
$sockets = array();
/* Setup socket pair */
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $sockets) === false) {
   echo "socket_create_pair failed. Reason: ".socket_strerror(socket_last_error());
}
/* Send and Recieve Data */
if (socket_write($sockets[0], "ABCdef123\n", strlen("ABCdef123\n")) === false) {
   echo "socket_write() failed. Reason: ".socket_strerror(socket_last_error($sockets[0]));
}
if (($data = socket_read($sockets[1], strlen("ABCdef123\n"), PHP_BINARY_READ)) === false) {
   echo "socket_read() failed. Reason: ".socket_strerror(socket_last_error($sockets[1]));
}
var_dump($data);
/* Close sockets */
socket_close($sockets[0]);
socket_close($sockets[1]);
?>


Change Language


Follow Navioo On Twitter
socket_accept
socket_bind
socket_clear_error
socket_close
socket_connect
socket_create_listen
socket_create_pair
socket_create
socket_get_option
socket_getpeername
socket_getsockname
socket_last_error
socket_listen
socket_read
socket_recv
socket_recvfrom
socket_select
socket_send
socket_sendto
socket_set_block
socket_set_nonblock
socket_set_option
socket_shutdown
socket_strerror
socket_write
eXTReMe Tracker