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֪ͨ