On 07/07/17 16:38, Sara Golemon wrote: > On Fri, Jul 7, 2017 at 10:04 AM, Martijn van Duren > <p...@list.imperialat.at> wrote: >> My use case is to set up a cluster of processes each with their own task >> and permission sets. These processes need to be able to communicate with >> each other over socket pairs, not just between the parent and the child, >> but also between children. >> > Sounds like you're describing unix domain sockets (or NamedPipes if > you're on Windows). > > -Sara > Yes, although tcp/ip are also possible with stream_socket_pair.
The point is, regardless of unix - or tcp sockets, they still have an underlying file descriptor, which I need to specify to the child, so that they can start using it. Ergo, I need to find a way to export this from the stream into PHP. To put it in code: <?php $sp = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, 0); echo (int) $sp[0]."\n"; ?> This returns 4 (the object id), instead of 3 (the fd). If I could get the fd, I could turn this into something like: <?php $sp = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, 0); switch (pcntl_fork()) { case -1: exit(255); case 0: fclose($sp[1]); pcntl_exec("/usr/local/libexec/whatever", ["-i", (int) $sp[0]]); default: fclose($sp[0]); do_parent_code(); } ?> Where whatever can be anything from a PHP-script to a C-compiled binary. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php