private function recv($data)
{
if ($this->use_header) {
while (strlen($data) < 4) {
$fragment = fread($this->s, $this->size);
$data .= $fragment;
}
list(, $total) = unpack('N', substr($data, 0, 4));
$data = substr($data, 4);
while (strlen($data) < $total) {
$fragment = fread($this->s, $this->size);
$data .= $fragment;
}
} else {
$ready = true;
while ($ready == true) {
$fragment = fread($this->s, $this->size);
$data .= $fragment;
$ready = strlen($fragment) == $this->size;
if ($ready) {
$result_read = array($this->s);
$result_write = null;
$result_except = null;
$ready = stream_select($result_read, $result_write, $result_except, 0) == 1;
}
}
}
return $data;
}