fd = new BigEndianSocketBuffer ( $host, $port );
$this->fd->writeChar ( 0xC8 );
$this->fd->writeChar ( 0xa0 );
echo "\r\nstarted at:$rts\r\n";
$this->fd->writeLong ( $rts );
$this->fd->writeInt ( $sid );
$this->fd->readInt ();
}
public function start() {
$i = 0;
while ( ($data = $this->readBuf ()) != null ) {
$i ++;
if ($i > 10) {
break;
}
if ($data ['rsize'] == 0) { //no operation
echo "no data\r\n";
continue;
}
$buffer = new BigEndianBytesBuffer ( $data ['buf'] );
file_put_contents ( 'rts', $data ['rts'] );
$magic = $buffer->readUnsignedChar ();
$cmd = $buffer->readUnsignedChar ();
if ($magic != TT::$TTMAGICNUM) {
echo "error data\r\n";
return;
}
$size = $data ['rsize'] - 3;
switch ($cmd) {
case TT::$TTCMDPUT : // put
if ($size > 8) {
$keysize = $buffer->readInt ();
$vsize = $buffer->readInt ();
$key = $buffer->readBytes ( $keysize );
$value = $buffer->readBytes ( $vsize );
//$vbuffer = new BytesBuffer ( $value );
//$flag = $vbuffer->readInt ();
//$vdata = $vbuffer->readBytes ( $vsize - 4 );
echo "put:" . $key . "=>" . $value . "\r\n";
$buffer->readUnsignedChar ();
} else {
//error
}
break;
case TT::$TTCMDOUT :
if ($size >= 4) {
$keysize = $buffer->readInt ();
$key = $buffer->readBytes ( $keysize );
echo "delete=>" . $key . "
\r\n";
}
break;
case TT::$TTCMDVANISH :
if ($size == 0) {
echo "varnish=>
\r\n";
}
break;
}
}
}
/**
* Enter description here...
*
* @param SocketBuffer $socketBuffer
*/
private function readBuf() {
$socketBuffer = $this->fd;
$data = null;
$c = $socketBuffer->readUnsignedChar ();
if ($c == 0xca) {
$data ['rsize'] = 0;
$data ['rts'] = 0;
$data ['rsid'] = 0;
$data ['buf'] = "";
return $data;
}
if ($c != 0xc9) {
return null;
}
$data ['rts'] = $socketBuffer->readLong ();
$data ['rsid'] = $socketBuffer->readInt ();
$data ['rsize'] = $socketBuffer->readInt ();
$data ['buf'] = $socketBuffer->readBytes ( $data ['rsize'] );
return $data;
}
}
while ( true ) {
$rts =trim(file_get_contents ( 'rts' ));
if (intval ( $rts ) == 0) {
$rts = 1;
}
$queue = new TTServerRep ( '192.168.50.180', 1978, bcadd($rts,1), 100 );
$queue->start ();
}
?>