private function processTask(&$task)
{
$read = $write = [$task['socket']];
$n = stream_select($read, $write, $e = null, $this->timeout);
if ($n > 0) {
switch ($task['status']) {
case 0:
// ready
fwrite($task['socket'], "GET {$task['path']} HTTP/1.1\r\nHost: {$task['host']}\r\n\r\n");
$task['status'] = 1;
break;
case 1:
// active
$data = fread($task['socket'], $this->readDataLen);
if (strlen($data) == 0) {
fclose($task['socket']);
echo "Failed to connect {$task['host']}.<br />\n";
$task['status'] = -1;
} else {
$task['status'] = 2;
$task['response'] .= $data;
}
break;
}
}
}