Re: Socket how to die if connection broken

From: Date: Mon, 08 Oct 2007 16:26:44 +0000
Subject: Re: Socket how to die if connection broken
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-262914@lists.php.net to get a copy of this message
chris@aquanuke.com wrote:
Hi I have a socket connection like so.. $sourceip = '84.234.18.16'; // ip you want to bind to $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_bind($sock, $sourceip); socket_connect($sock, 'dac.nic.uk', 2043); if ($socket === false) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode);
      die("Couldn't create socket: [$errorcode] $errormsg");
} But if the socket connection gets broken it creates an error msg Warning: socket_write(): unable to write to socket [32]: Broken pipe in Warning: socket_write(): unable to write to socket [32]: Broken pipe in Warning: socket_write(): unable to write to socket [32]: Broken pipe in That spills out for thousands and thousands of lines. What would I need for the script to die if the connection gets broken.
This has nothing to do with opening the socket. When you are writing to the socket you need something like this... if (false === @socket_write($s, $buffer)) {
    // In here you know something is wrong. Use socket_last_error() to
    // find out what and deal with it appropriately. Bear in mind that
    // socket_write can fail for lots of reasons, not just a broken
    // pipe so you need to check what error occurred before you can
    // know what to do with it.
} Note that you should never use the @ operator unless you are absolutely sure you're handling any potential errors correctly. -Stut -- http://stut.net/

« previous php.general (#262914) next »