downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

stream_socket_recvfrom> <stream_socket_get_name
[edit] Last updated: Fri, 24 May 2013

view this page in

stream_socket_pair

(PHP 5 >= 5.1.0)

stream_socket_pairSoket akımlarınca ayırt edilebilen bir bağlantı çifti oluşturur

Açıklama

array stream_socket_pair ( int $alan , int $tür , int $protokol )

stream_socket_pair() işlevi, soket akımlarınca ayırt edilebilen bir bağlantı çifti oluşturur. Bu işlev genellikle süreçler arası iletişimde kullanılır.

Değiştirgeler

alan

Kullanılacak protokol ailesi: STREAM_PF_INET, STREAM_PF_INET6 veya STREAM_PF_UNIX

tür

Kullanılacak iletişim türü: STREAM_SOCK_DGRAM, STREAM_SOCK_RAW, STREAM_SOCK_RDM, STREAM_SOCK_SEQPACKET veya STREAM_SOCK_STREAM

protokol

Kullanılacak protokol: STREAM_IPPROTO_ICMP, STREAM_IPPROTO_IP, STREAM_IPPROTO_RAW, STREAM_IPPROTO_TCP veya STREAM_IPPROTO_UDP

Bilginize: Bu sabitlerle ilgili açıklamalar için Akım sabitleri listesine bakınız.

Dönen Değerler

Başarısızlık durumunda FALSE. aksi takdirde iki soket özkaynağı içerem bir dizi döner.

Sürüm Bilgisi

Sürüm: Açıklama
5.3.0 Bu işlev artık Windows üzerinde de kullanılabiliyor.

Örnekler

Örnek 1 - stream_socket_pair() örneği

Süreçler arası iletişimde stream_socket_pair() işlevinin kullanılımını gösteren bir örnek:

<?php

$sockets 
stream_socket_pair(STREAM_PF_UNIXSTREAM_SOCK_STREAMSTREAM_IPPROTO_IP);
$pid     pcntl_fork();

if (
$pid == -1) {
     die(
'süreç çatallanamadı');

} else if (
$pid) {
     
/* ebeveyn */
    
fclose($sockets[0]);

    
fwrite($sockets[1], "child PID: $pid\n");
    echo 
fgets($sockets[1]);

    
fclose($sockets[1]);

} else {
    
/* çocuk */
    
fclose($sockets[1]);

    
fwrite($sockets[0], "alt süreçten bir ileti var\n");
    echo 
fgets($sockets[0]);

    
fclose($sockets[0]);
}

?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

child PID: 1378
alt süreçten bir ileti var



add a note add a note User Contributed Notes stream_socket_pair - [1 notes]
up
-1
Till
5 years ago
This is some freak-example how to use this feature to fork to a
bc-command on a Solaris-Server:

<?
$sockets=stream_socket_pair(STREAM_PF_UNIX,STREAM_SOCK_STREAM,
                                                STREAM_IPPROTO_IP);
passthru('
    perl -e \'
        use strict; my ($x,@x);
        open(STDIN,"-|","/bin/pfiles $$");
        while (<>) { $x=$1 if(/^ +([0-9]+):/); push(@x,$x) if(/AF_UNIX/); }
        print "Starting bc -l 0<&$x[1] 1>&$x[1] $x[0]<&- $x[0]>&- ...\n\n";
        exec("bash","-c","bc -l 0<&$x[1] 1>&$x[1] $x[0]<&- $x[0]>&- &");\'');

fclose($sockets[0]);

fwrite($sockets[1],"666*999\n");
print "666*999 = ".fgets($sockets[1])."\n";

fwrite($sockets[1],"./696\n");
print "./696 = ".fgets($sockets[1])."\n";

fwrite($sockets[1],"quit\n");
fclose($sockets[1]);
?>

The big problem is, that there seems to be no way to obtain the real
filedescriptors of the two sockets, but you need them, if you want to
redirect some program's STDOUT and STDIN to one of these sockets.

I misused the /bin/pfiles command on a Solaris UNIX to find them.
Another (non-php-) problem is, that, if you use php in Apache, there
will be already a lot of open filedescriptors and the filedescriptors
of the sockets will be greater than 9. That's why I had to use the bash.

I think it is awful, but it works. Would be great, if someone
would come up with a better idea.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites