note 43283 added to function.socket-create-pair
| From: | toppi at kacke dot de | Date: | Wed, 16 Jun 2004 18:22:33 +0000 |
| Subject: | note 43283 added to function.socket-create-pair | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-71157@lists.php.net to get a copy of this message | ||
<?
//socket_create_pair() example
$sockets = array();
$mypid = getmypid()
if (@file_exists("/tmp/$mypid.sock")){
echo ('Temporary socketfile already exists.');
exit;
}
//Create pair socket
if(!socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $sockets)){
//errorhandler
}
/* Send and Recieve Data */
if(!socket_write($sockets[0], "Hallo\n")){
//errorhandler
}
if(!$data = socket_read($sockets[1], 1024, PHP_BINARY_READ)){
//errorhandler
}
var_dump($data);
socket_close($sockets[0]);
socket_close($sockets[1]);
exit;
?>
Example 2.
IPC (Interprocesscontrol) example
Pipe between master and childprocess
<?
$sockets = array();
$parent_msg = "Parent says Hello :)";
$child_msg = "Child says Hello :)";
if(!socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $sockets)){
//errorhandler
}
$pid = pcntl_fork();
if($pid == -1){
echo 'Could not fork Process. Dying....';
exit;
} elseif($pid) {
// We are the PARENT
socket_close($sockets[0]);
if(!socket_write($sockets[1], $parent_msg)){
//errorhandler
}
if( $data = socket_read($sockets[1], 1024, PHP_NORMAL_READ)) === false ){
//errorhandler
}
echo 'Parent recieved ', $data;
} else {
//We are the Child
socket_close($sockets[1]);
if(!socket_write($sockets[0], $child_msg)){
//errorhandler
}
if( $data = socket_read($sockets[0], 1024, PHP_NORMAL_READ)) === false ){
//errorhandler
}
echo 'Child recieved ', $data;
}
?>
I have not checked the syntax yet :) But i hope it will give you some ideas about :)
Toppi
----
Manual Page -- http://www.php.net/manual/en/function.socket-create-pair.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+43283
Delete -- http://master.php.net/manage/user-notes.php?action=delete+43283&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+43283&report=yes
Search -- http://master.php.net/manage/user-notes.php