Major changes to webserver backend. All socket functions are abstracted to allow support for stream_* which seems to be both more widely supported and better at handling blocking and timeouts, at the cost of a small bit of speed. Keep-Alive times out properly and thanks to a bit of IPC code from stream_create_pair(), zombie children are mostly eliminated by proper pcntl_wait() being called when a child shuts down normally, and children die within 0.2sec if the parent receives a SIGTERM or SIGINT, even if the children are waiting on the socket.
function expand_track(tid)
{
var div = document.getElementById('track_inner_' + tid);
if ( div.style.display == 'block' )
{
div.style.display = 'none';
}
else
{
div.style.display = 'block';
}
}