1.9.0

1.9�汾�����˶��������ԣ��޸��˶����֪���⡣1.9�汾��100%���¼���1.8�ģ��û����޷�������

����RedisServer���

Swoole-1.9������һ������Redis��������Э���Server��ܣ��ɻ��ڴ˿��ʵ��Redis��������֧���Զ���ָ�

ʾ����

use Swoole\Redis\Server;

$server = new Server('127.0.0.1', 9501);

$server->setHandler('Set', function($fd, $data) {
    $server->array($data[0], $data[1]);
    return Server::format(Server::INT, 1);
});

$server->start();

�ͻ�������pipe����

Swoole-1.9Ϊ�첽TCP�ͻ���������һ��pipe���������Խ��ͻ����յ��������ض�������һ���ļ��������������Ƿ�����������fd��stream��Դ��sockets��Դ������Swoole\Client��Swoole\Process�Ĺܵ���

ʾ����

use Swoole\Client;

$client = new Client(SWOOLE_TCP | SWOOLE_ASYNC);

$client->on("error", function() {
    echo "connect failed\n";
});

$client->on("close", function() {
    echo "connect closed\n";
});

$client->on("connect", function($cli) {
    //�������ض��򵽱�׼�������������ͻ��˷��͵��������ݻ��ӡ����Ļ
    $cli->pipe(STDOUT);
});

$client->connect("127.0.0.1", 9501);

�����������¼�

1.9������2���µ��¼��ص�onBufferFull��onBufferEmpty���Լ�2���µ�������buffer_high_watermark��buffer_low_watermark��

���д������ݹ��໺�����ߴ糬��buffer_high_watermark�ʹ���onBufferFull�¼��������������ݷ�����ɣ�ˮλ����buffer_low_watermark��ֵ���ᴥ��onBufferEmpty�¼���

�������¼�ͬʱ������Server��Client��

ʾ����

$client = new Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
//�����¼��ص�����
$client->on("connect", function($cli) {
    $cli->send("hello world\n");
});
$client->on("receive", function($cli, $data) {
    echo "Received: ".$data."\n";
});
$client->on("error", function($cli) {
    echo "Connect failed\n";
});
$client->on("close", function($cli) {
    echo "Connection close\n";
});
$client->on("bufferFull", function($cli) {
   //��ͣ���ݽ���
    $cli->pause();
});
$client->on("bufferEmpty", function($cli) {
    //�ָ����ݽ���
    $cli->resume();
});
//������������
$client->connect('127.0.0.1', 9501, 0.5);

����Channelģ��

swoole-1.9������һ���µ��ڴ����ݽṹChannel��������Go��chan���ײ���ڹ����ڴ�+Mutex������ʵ�֣���ʵ���û�̬�ĸ������ڴ���С�

ʾ����

$chan = new Swoole\Channel(2 * 1024 * 1024); //2M
$chan->push(1234);
$chan->push("hello world");
$chan->push(array(1234, 4567));
while($r = $chan->pop())
{
    var_dump($r);
}

����mmapģ��

swoole-1.9������һ���µ�ģ�飬�ṩ�˶Բ���ϵͳmmap�ķ�װ��ʹ��mmap ���Ժܷ���ؽ�һ�������ļ�ӳ��Ϊ�ڴ棬��д���ܸ��ߡ�

mmap���Լ��ٶ�д���̲�����IO���ġ������ڴ濽������ʵ�ָ����ܵĴ��̲��������У�����ʹ��mmap���������ܡ�

ʾ����

$file = __DIR__.'/data';
$size = 8192;
$fp = swoole\mmap::open($file, 8192);

fwrite($fp, "hello world\n");
fwrite($fp, "hello swoole\n");

fflush($fp);
fclose($fp);

������������

�����޸�