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������ʵ�֣���ʵ���û�̬�ĸ������ڴ���С�
- Channel�����ڶ���̻����£��ײ��ڶ�ȡд��ʱ���Զ�������Ӧ�ò㲻��Ҫ��������ͬ������
- �����ڸ������ڴ����ſ������ӽ�����ʹ��
ʾ����
$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);
������������
- ����
swoole_clear_dns_cache������������ײ��DNS����
������
- ��
Redis�ͻ���type�����������ַ��������� - ��
Http\Client�����õ����� - ��ͬ���ͻ��˳���Э��
package_max_length��Ч������ - ���Ͱ汾gcc�³�������żȻ��������������
- ���첽
WebSocket�ͻ���websocket_mask��Ч������ - ��
MySQL�ͻ����ڼ�¼��������ʱżȻ���������� - ��Macƽ̨��task����8Kʱ������ʱ�ļ�ʧ�ܵĵ�����Ͷ�����������
- ��
taskWaitMulti�ڽ��̷��س���8Kʱ���ճ�ʱ������ - ��
atmoic��add��sub����ֵ���ڵ�����ͬ������