Hrmm,
It poses an interesting one setting up moving beyond the standard timout, which by the way works in the example below. You need to look into the difference between "persistent" and "session" conexions... for example
$cfgHost="whatever.com";
$cfgPort="80";
$cfgTime=set_time_limit(90);
$fp=pfsockopen($cfgServ,$cfgPort,$cfgTime);
This will open and hold a socket on port 80 for 90 seconds or until you issue
fclose($fp);
Back to your other point of a multi threaded engine to check 4 timeout remotes... there is a 'cheap' solution for that using the system command
system('ping $cfgHost');
Hope this shed some light on what by now you must have solved... but may be of help somewhere to other peeps 😛