Utilizados en el proyecto de PHP, pero debido a la larga tarea que consume tiempo, después de la presentación de la parte delantera, lo que necesita la respuesta asíncrona servidor. Servidor de forma asincrónica una variedad de programas, incluyendo MQ, fsocket, Swoole y así sucesivamente. (Recomendado aprendizaje: swoole video tutorial) Swoole usando lenguaje C pura proporciona asíncrono lenguaje multi-roscado servidor PHP, asíncrono, TCP cliente de red / UDP, asíncrono MySQL , asíncrono Redis, agrupación de conexiones de base de datos, AsyncTask, colas de mensajes, milisegundo temporizador una lectura asíncrona de archivos y escribir, las consultas DNS asíncronas. Swoole construido HTTP / WebSocket servidor / cliente, HTTP2. 0 del lado del servidor. Lo más importante es la ayuda perfecta para el lenguaje PHP. Por lo tanto Swoole utiliza para construir un servidor asíncrono proporciona una respuesta asíncrona, un empuje, una serie de tareas de trabajo programado. Swoole está escrito en lenguaje C, a modo de compilado e instalado. Hay dependencias instaladas: PHP -5.3.10 o temprano gcc -4.4 o temprano la marca autoconf PCRE (CentOS sistema puede ejecutar el comando: yum install PCRE - devel) Instalación: phpize # Si no existe el comando, añada delante el camino real de la php ./ Configurar de la marca sudo make install después compilado, necesidad de PHP . Añadir ini extendieron Extensión = swoole. SO servidor de clase servidor { Privada $ Serv ; pública función de la __construct () { $ al este -> Serv = nueva nueva swoole_server ( "0.0.0.0", 9501 ); $ el este -> ser-> conjunto ( array ( // . 'worker_num' => 1, 1-4 veces el conjunto normal de // el número de servidores de CPU . 'a demonizar '=> 1, // ejecutar un daemon ' max_request '=> 10000, ' task_worker_num '=> 1, // número de tareas de los procesos " task_ipc_mode "=> 3,array ( $ this , 'OnReceive' )); $ this -> ser-> en ( 'tarea', array ( $ this , 'onTask' )); $ this -> ser-> en ( 'Finalizar', array ( $ this , 'onFinish' )); $ this -> ser-> start (); } Pública función OnReceive (swoole_server $ serv , $ fd , $ from_id , $ data ) { // 放入任务队列,开始执行 $ task_id = $ serv -> tarea ( $ data ); } Pública función onTask ( $ serv , $ task_id ,$ from_id , $ data ) { // 做一些事情 } 客户端 clase de cliente { privado $ cliente , $ ip , $ puerto , $ params ; pública función __construct ( $ ip , $ puerto , $ params ) { $ this -> ip = $ ip ; $ this -> port = puerto $ ; $ this -> params = $ params ; $ this -> cliente = nueva swoole_client (SWOOLE_SOCK_TCP,SWOOLE_SOCK_ASYNC); $ el este -> Client-> SET ( array ( 'open_length_check' => true , 'package_length_type' => 'N', 'package_length_offset' => 0, // N-byte longitud del paquete es un valor ' package_body_offset '=> 4, // byte que comienza a calcular la longitud ' package_max_length '=> 2.000.000, // protocolo de longitud máxima )); // establecer la función de devolución de llamada de eventos $ el esta -> cliente-> oN (' Conectar', array ( $ del este , 'la onConnect' )); $ del este -> cliente-> ON ( 'la recepción',array ( $ this, 'OnReceive' )); $ this -> cliente-> en ( 'Cerrar', array ( $ this , 'onClose' )); $ this -> cliente-> en ( 'error', array ( $ this , 'onError' )); // 发起网络连接 $ this -> cliente-> connect ( $ ip , $ puerto , 3 ); } Pública función OnReceive ( $ CLI , $ data ) { echo "Recibido:". $ data . "\ n" ; $ data = paquete ( 'N', strlen ( $ data )). $ data ; $ CLI -> enviar ( $ data ); $ cli -> close (); } Pública función onClose ( $ CLI ) { echo "estrecha conexión \ n" ; } Pública función onError () { echo "error de conexión \ n" ; } }