swoole_event_add
swoole_event_add�������ڽ�һ��socket���뵽swoole��reactor�¼������С��˺�����������Server��Clientģʽ�¡� ����ԭ�ͣ�
bool swoole_event_add(int $sock, mixed $read_callback, mixed $write_callback = null, int $event_flag = null);
����1����Ϊ�����������ͣ�
- int�������ļ�������,����swoole_client��socket,�Լ���������չ��socket������mysql��
- stream��Դ������stream_socket_client/fsockopen ��������Դ
- sockets��Դ������sockets��չ�� socket_create��������Դ ��Ҫ�ڱ���ʱ���� ./configure --enable-sockets
����2Ϊ�ɶ��ص�����������3Ϊ��д�¼��ص����������ַ���������������+�������ྲ̬��������������������socket�ɶ�ʱ�ص�ָ���ĺ�����
swoole_event_add��swoole1.6.2+֮�����
��3��4��������1.7.1�汾����ã����ڼ�����д�¼��ص����Լ����ö�д�¼��ļ���
����4Ϊ�¼����͵����룬��ѡ��ر�/����ɶ���д�¼�����SWOOLE_EVENT_READ��SWOOLE_EVENT_WRITE��
����SWOOLE_EVENT_READ | SWOOLE_EVENT_WRITE
��Server������ʹ�ã��������Ϊ��worker/taskworker�����н���socketע�ᵽepoll�¼��С�
��Client������ʹ�ã��������Ϊ�ڿͻ��˽����н���socketע�ᵽepoll�¼��С�
<?php
$db = new mysqli;
$db->connect('127.0.0.1', 'root', 'root', 'test');
$db->query("show tables", MYSQLI_ASYNC);
swoole_event_add(swoole_get_mysqli_sock($db), function($db_sock) {
global $db;
$res = $db->reap_async_query();
var_dump($res->fetch_all(MYSQLI_ASSOC));
swoole_event_del(swoole_get_mysqli_sock($db)); // socket������ɺ�epoll�¼����Ƴ�socket
});
$db2 = new mysqli;
$db2->connect('127.0.0.1', 'root', 'root', 'test');
$db2->query("show tables", MYSQLI_ASYNC);
swoole_event_add(swoole_get_mysqli_sock($db2), function($db_sock) {
global $db2;
$res = $db2->reap_async_query();
var_dump($res->fetch_all(MYSQLI_ASSOC));
swoole_event_del(swoole_get_mysqli_sock($db2)); // socket������ɺ�epoll�¼����Ƴ�socket
});
echo "Finish\n"; //swoole_event_add�����������̣����д����˳��ִ��
�ص�����
- �ڿɶ��¼��ص������б���ʹ��
fread��recv�Ⱥ�����ȡSocket�������е����ݣ������¼�����������������ϣ��������ȡ����ʹ��Swoole\Event::del�Ƴ��¼����� - �ڿ�д�¼��ص������У�д��socket֮��������
Swoole\Event::del�Ƴ��¼������������д�¼���������� - ִ��
fread��socekt_recv��socket_read��Swoole\Client::recv����false�����Ҵ�����ΪEAGAINʱ��ʾ��ǰSocket���ջ�������û���κ����ݣ���ʱ��Ҫ����ɶ������ȴ�EventLoop֪ͨ - ִ��
fwrite��socket_write��socket_send��Swoole\Client::send��������false�����Ҵ�����ΪEAGAINʱ��ʾ��ǰSocket���ͻ�������������ʱ���ܷ������ݡ���Ҫ������д�¼��ȴ�EventLoop֪ͨ