sorry, das hatte ich in meinem ersten Post nicht geschrieben.
socket_accept() ist natürlich erfolgt.
Aber das stimmt so nicht, wie du es sagst.
Manual zu socket_close() sagt:
...die mit socket_create() oder socket_accept() erzeugt wurden.
Aber es funktioniert trotzdem nicht.
Vielleicht sollte ich erwähnen, dass ich mich im Server einlogge und sozusagen einen remote-shutdown mache.
D.h. vereinfacht dargestellt:
PHP-Code:
$sock = @socket_create( AF_INET, SOCK_STREAM, 0 );
$ret = @socket_bind ( $sock, ADRESS, IMODD_PORT );
$ret = @socket_listen( $sock, 5 );
do
{
$msgsock = socket_accept( $sock );
$buf = socket_read( $msgsock, 4096 );
if ( "remoteshutdown" == $buf )
{
$arrOpt = array('l_onoff' => 1, 'l_linger' => 1);
socket_set_block( $sock );
socket_set_option( $sock, SOL_SOCKET, SO_LINGER, $arrOpt );
$sock_shutdown = socket_shutdown( $sock );
$sock_close = socket_close( $sock );
}
}
while (true);
muss ich jetzt $msgsock auch nochmal explizit schließen und $ret vielleicht auch noch? Spielt da die Reihenfolge eine Rolle, welcher Socket zuerst geschlossen wird?
Ich habe (leider) auch noch keinen gefunden, der ein ähnliches Problem beschreibt.
Andi
Lesezeichen