onReceive
���յ�����ʱ�ص��˺�����������worker�����С�����ԭ�ͣ�
function onReceive(swoole_server $server , int $fd , int $from_id , string $data ); |
- $server��swoole_server����
- $fd��TCP�ͻ������ӵ��ļ�������
- $from_id��TCP�������ڵ�Reactor�߳�ID
- $data���յ����������ݣ��������ı����߶���������
���ӣ�
$serv = new swoole_server( "127.0.0.1" , 9501); $serv ->set( array ( 'worker_num' => 8, //������������ 'daemonize' => true, //�Ƿ���Ϊ�ػ����� )); $serv ->on( 'connect' , function ( $serv , $fd ){ echo "Client:Connect.\n" ; }); $serv ->on( 'receive' , function ( $serv , $fd , $from_id , $data ) { $serv ->send( $fd , 'Swoole: ' . $data ); $serv ->close( $fd ); }); $serv ->on( 'close' , function ( $serv , $fd ) { echo "Client: Close.\n" ; }); $serv ->start(); |
- ����$fd��$from_id��ϸ�Ľ���
- δ����swoole���Զ�Э��ѡ�onReceive�ص����������յ����������Ϊ64K
- Swoole֧�ֶ����Ƹ�ʽ��$data�����Ƕ���������
Э�����˵��
- UDPЭ�飬onReceive���Ա�֤�����յ�һ�������İ�����Ȳ�����64K
- UDPЭ���£�$fd�����Ƕ�Ӧ�ͻ��˵�IP��$from_id�ǿͻ��˵Ķ˿�
- TCPЭ������ʽ�ģ�onReceive����֤���ݰ��������ԣ����ܻ�ͬʱ�յ�����������Ҳ����ֻ�յ�һ���������һ��������
- swooleֻ����ײ�ͨ�ţ�$data��ͨ��������յ���ԭʼ���ݡ������ݽ�������Ҫ��PHP����������ʵ��
���������
eof_check/length_check/http_protocol
��$data�ij��ȿ��ܻᳬ��64K���������$server->setting['package_max_length']
����TCPЭ���°�������
- ʹ��swoole�ṩ��open_eof_check/open_length_check/open_http_protocol�����Ա�֤���ݰ���������
- ��ʹ��swoole��Э�鴦����onReceive��PHP���������ж����ݷ������ϲ�/������ݰ���
���磺�����п�������һ�� $buffer = array()��ʹ��$fd��Ϊkey�����������������ݡ� ÿ���յ����ݽ����ַ���ƴ�ӣ�$buffer[$fd] .= $data��Ȼ�����ж�$buffer[$fd]�ַ����Ƿ�Ϊһ�����������ݰ���
Ĭ������£�ͬһ��fd�ᱻ���䵽ͬһ��worker�У��������ݿ���ƴ��������ʹ��dispatch_mode = 3ʱ��
������������ռʽ�ģ�ͬһ��fd���������ݿ��ܻᱻ�ֵ���ͬ�Ľ��̡�������ʹ�����������ݰ�ƴ�ӷ���
����ճ�����⣬��SMTPЭ�飬�ͻ��˿��ܻ�ͬʱ����2��ָ���swoole�п�����һ�����յ��ģ���ʱӦ�ò���Ҫ���в����smtp��ͨ��\r\n���ְ��ģ�����ҵ���������Ҫ explode("\r\n", $data)��������ݰ���
���������Ӧ��ʽ�ķ������迼��ճ�����⡣ԭ���ǿͻ����ڷ���һ���������ȵ��������˷��ص�ǰ�������Ӧ���ݣ��Żᷢ��ڶ���������ͬʱ����2������