International PHP Conference Munich 2025

Voting

: max(eight, zero)?
(Example: nine)

The Note You're Voting On

aidan at php dot net
20 years ago
If you want to set an absolute maximum execution time for stream_select in a loop, it's important to decrement the max_time value passed to stream_select.

<?php
// The maximum time for execution in milliseconds
$maxtime = 200000;
// The time the loop started
$starttime = microtime(true);
// Original array of sockets
$r = $orig_sockets;

// The function to calculate the timeout
function calctimeout($maxtime, $starttime)
{
return
$maxtime - ((microtime(true) - $starttime) * 1000000);
}

while (
stream_select($r, $w = null, $e = null, 0, calctimeout($maxtime, $starttime)) !== 0)
{
// loop through the sockets that showed activity
foreach ($r as $socket) {
// $socket talked
}

// stream_select modifies the contents of $r
// in a loop we should replace it with the original
$r = $orig_sockets;
}

?>

<< Back to user notes page

To Top