# Swoole

# Introducción

Swoole es un motor de comunicación en red paralelo basado en eventos asíncronos y corrutinas, escrito en C++, que proporciona soporte para corrutinas y programación de red de alto rendimiento para PHP. Ofrece varios módulos de servidor y cliente de red para múltiples protocolos de comunicación, lo que facilita la implementación rápida de servicios TCP/UDP, Web de alto rendimiento, servicios WebSocket, IoT, comunicación en tiempo real, juegos, microservicios, etc., rompiendo los límites de PHP en los dominios web tradicionales. Para comenzar, consulte la » Documentación de Swoole.

> Nota: Esta extensión no está disponible en las plataformas Windows.

- Instalación/Configuración
  - Requerimientos
  - Instalación
  - Configuración en tiempo de ejecución
- Constantes predefinidas
- Funciones de Swoole
  - swoole_async_dns_lookup — Busca de manera asíncrona y no bloqueante la dirección IP de un host
  - swoole_async_read — Lee un flujo de fichero de manera asíncrona
  - swoole_async_readfile — Lee un fichero de manera asíncrona
  - swoole_async_set — Actualiza las opciones de E/S asíncronas
  - swoole_async_write — Escribe datos en un flujo de fichero de manera asíncrona
  - swoole_async_writefile — Escribe datos en un fichero de manera asíncrona
  - swoole_clear_error — Elimina los errores en el socket o el último código de error
  - swoole_client_select — Devuelve la descripción del fichero listo para ser leído/escrito o un error
  - swoole_cpu_num — Devuelve el número de CPU
  - swoole_errno — Devuelve el código de error de la última llamada al sistema
  - swoole_error_log — Escribe los mensajes de error en el registro
  - swoole_event_add — Añade una nueva función de retrollamada de un socket en el EventLoop
  - swoole_event_defer — Añade una retrollamada a la próxima iteración del bucle de eventos
  - swoole_event_del — Elimina todas las funciones de retrollamada de eventos de un socket
  - swoole_event_exit — Sale del bucle de eventos, disponible únicamente en el lado-cliente
  - swoole_event_set — Actualiza las funciones de retrollamada de eventos de un socket
  - swoole_event_wait — Inicia el bucle de eventos
  - swoole_event_write — Escribe datos en un socket
  - swoole_get_local_ip — Devuelve las direcciones IP IPv4 de cada NIC en la máquina
  - swoole_last_error — Devuelve el último mensaje de error
  - swoole_load_module — Carga una extensión swoole
  - swoole_select — Selecciona las descripciones de ficheros listas para leer/escribir o en error en el bucle de eventos
  - swoole_set_process_name — Define el nombre del proceso
  - swoole_strerror — Convierte el Errno en mensajes de error
  - swoole_timer_after — Dispara una retrollamada única en el futuro
  - swoole_timer_exists — Devuelve si existe una retrollamada de temporizador
  - swoole_timer_tick — Dispara una retrollamada de temporizador por intervalo de tiempo
  - swoole_version — Devuelve la versión de Swoole
- Swoole\Async — La clase Swoole\Async
  - Swoole\Async::dnsLookup — Busca de manera asíncrona y no bloqueante la dirección IP de un host.
  - Swoole\Async::read — Lee de manera asíncrona un flujo de fichero.
  - Swoole\Async::readFile — Lee un fichero de manera asíncrona.
  - Swoole\Async::set — Actualiza las opciones de E/S asíncrona.
  - Swoole\Async::write — Escribe de manera asíncrona datos en un flujo de fichero.
  - Swoole\Async::writeFile — Descripción
- Swoole\Atomic — La clase Swoole\Atomic
  - Swoole\Atomic::add — Añade un número al valor del objeto atómico.
  - Swoole\Atomic::cmpset — Compara y define el valor del objeto atómico.
  - Swoole\Atomic::__construct — Construye un nuevo objeto atómico Swoole.
  - Swoole\Atomic::get — Devuelve el valor actual del objeto atómico.
  - Swoole\Atomic::set — Define un nuevo valor para el objeto atómico.
  - Swoole\Atomic::sub — Sustrae un número del valor del objeto atómico.
- Swoole\Buffer — La clase Swoole\Buffer
  - Swoole\Buffer::append — Añade la string o los datos binarios al final del buffer de memoria y devuelve el nuevo tamaño de la memoria asignada.
  - Swoole\Buffer::clear — Reinicializa el búfer de memoria.
  - Swoole\Buffer::__construct — Asignación de bloques de memoria de tamaño fijo.
  - Swoole\Buffer::__destruct — Destruye el buffer de memoria Swoole.
  - Swoole\Buffer::expand — Amplía el tamaño del búfer de memoria.
  - Swoole\Buffer::read — Lee los datos del búfer de memoria en función del desplazamiento y la longitud.
  - Swoole\Buffer::recycle — Libera la memoria al SO que no es utilizada por el buffer de memoria.
  - Swoole\Buffer::substr — Lee los datos del búfer de memoria en función del desplazamiento y la longitud. O elimina los datos del búfer de memoria.
  - Swoole\Buffer::__toString — Devuelve el valor de la string del búfer de memoria.
  - Swoole\Buffer::write — Escribe datos en el buffer de memoria. La memoria asignada para el buffer no será modificada.
- Swoole\Channel — La clase Swoole\Channel
  - Swoole\Channel::__construct — Construye un canal Swoole
  - Swoole\Channel::__destruct — Destruye un canal Swoole.
  - Swoole\Channel::pop — Lee y extrae datos del canal swoole.
  - Swoole\Channel::push — Escribe y empuja datos en el canal Swoole.
  - Swoole\Channel::stats — Devuelve las estadísticas del canal Swoole.
- Swoole\Client — La clase Swoole\Client
  - Swoole\Client::close — Cierra la conexión establecida.
  - Swoole\Client::connect — Conecta al puerto TCP o UDP remoto.
  - Swoole\Client::__construct — Crea un cliente TCP/UDP síncrono o asíncrono Swoole, con o sin SSL.
  - Swoole\Client::__destruct — Destruye el cliente Swoole.
  - Swoole\Client::getpeername — Devuelve el nombre del socket remoto de la conexión.
  - Swoole\Client::getsockname — Devuelve el nombre del socket local de la conexión.
  - Swoole\Client::isConnected — Verifica si la conexión está establecida.
  - Swoole\Client::on — Añade funciones de retrollamada desencadenadas por eventos.
  - Swoole\Client::pause — Pone en pausa la recepción de datos.
  - Swoole\Client::pipe — Redirige los datos hacia otro descriptor de fichero.
  - Swoole\Client::recv — Recibe datos del socket remoto.
  - Swoole\Client::resume — Reanuda la recepción de datos.
  - Swoole\Client::send — Envía datos al socket TCP remoto.
  - Swoole\Client::sendfile — Envía un fichero al socket TCP remoto.
  - Swoole\Client::sendto — Envía datos a la dirección UDP remota.
  - Swoole\Client::set — Define los parámetros del cliente Swoole antes de que la conexión sea establecida.
  - Swoole\Client::sleep — Elimina el cliente TCP del bucle de eventos del sistema.
  - Swoole\Client::wakeup — Añade el cliente TCP al ciclo de eventos del sistema.
- Swoole\Connection\Iterator — La clase Swoole\Connection\Iterator
  - Swoole\Connection\Iterator::count — Cuenta las conexiones.
  - Swoole\Connection\Iterator::current — Devuelve la entrada de conexión actual.
  - Swoole\Connection\Iterator::key — Devuelve la clave de la conexión actual.
  - Swoole\Connection\Iterator::next — Se desplaza hacia la siguiente conexión.
  - Swoole\Connection\Iterator::offsetExists — Verifica si una posición existe.
  - Swoole\Connection\Iterator::offsetGet — Posición a recuperar.
  - Swoole\Connection\Iterator::offsetSet — Asigna una conexión a la posición especificada.
  - Swoole\Connection\Iterator::offsetUnset — Elimina una posición.
  - Swoole\Connection\Iterator::rewind — Reinicializa el iterador.
  - Swoole\Connection\Iterator::valid — Verifica si la posición actual es válida.
- Swoole\Coroutine — La clase Swoole\Coroutine
  - Swoole\Coroutine::call_user_func — Llama a una función de retrollamada dada por el primer argumento
  - Swoole\Coroutine::call_user_func_array — Llama a una función de retrollamada con un array de argumentos
  - Swoole\Coroutine::cli_wait — Descripción
  - Swoole\Coroutine::create — Descripción
  - Swoole\Coroutine::getuid — Descripción
  - Swoole\Coroutine::resume — Descripción
  - Swoole\Coroutine::suspend — Descripción
- Swoole\Coroutine\Lock — La clase Swoole\Coroutine\Lock
  - Swoole\Coroutine\Lock::__construct — Construye un nuevo bloqueo de corrutina
  - Swoole\Coroutine\Lock::lock — Adquirir el bloqueo, bloqueando si es necesario
  - Swoole\Coroutine\Lock::trylock — Intenta adquirir el bloqueo sin bloquear
  - Swoole\Coroutine\Lock::unlock — Liberar el bloqueo
- Swoole\Event — La clase Swoole\Event
  - Swoole\Event::add — Añade una nueva función de retrollamada de un socket en la ciclo de eventos.
  - Swoole\Event::defer — Añade una retrollamada a la próxima iteración del bucle de eventos.
  - Swoole\Event::del — Elimina todas las funciones de retrollamada de eventos de un socket.
  - Swoole\Event::exit — Sale del bucle de eventos, disponible únicamente en el lado-cliente.
  - Swoole\Event::set — Actualiza las funciones de retrollamada de eventos de un socket.
  - Swoole\Event::wait — Descripción
  - Swoole\Event::write — Escribe datos en el socket.
- Swoole\Exception — La clase Swoole\Exception
- Swoole\Http\Client — La clase Swoole\Http\Client
  - Swoole\Http\Client::addFile — Añade un fichero al formulario de publicación.
  - Swoole\Http\Client::close — Cierra la conexión http.
  - Swoole\Http\Client::__construct — Construye el cliente HTTP asíncrono.
  - Swoole\Http\Client::__destruct — Destruye el cliente HTTP.
  - Swoole\Http\Client::download — Descarga un fichero desde el servidor remoto.
  - Swoole\Http\Client::execute — Envía la petición HTTP después de haber definido los parámetros.
  - Swoole\Http\Client::get — Envía una petición HTTP GET al servidor remoto.
  - Swoole\Http\Client::isConnected — Verifica si la conexión HTTP está establecida.
  - Swoole\Http\Client::on — Registra una retrollamada por nombre de evento.
  - Swoole\Http\Client::post — Envía una petición HTTP POST al servidor remoto.
  - Swoole\Http\Client::push — Añade datos al cliente websocket.
  - Swoole\Http\Client::set — Actualiza los parámetros del cliente HTTP.
  - Swoole\Http\Client::setCookies — Define las cookies de la petición HTTP.
  - Swoole\Http\Client::setData — Define los datos del cuerpo de la petición HTTP.
  - Swoole\Http\Client::setHeaders — Define las cabeceras de la petición HTTP.
  - Swoole\Http\Client::setMethod — Define el método de petición HTTP.
  - Swoole\Http\Client::upgrade — Actualiza al protocolo websocket.
- Swoole\Http\Request — La clase Swoole\Http\Request
  - Swoole\Http\Request::__destruct — Destruye la petición HTTP.
  - Swoole\Http\Request::rawcontent — Devuelve el cuerpo bruto de la petición HTTP.
- Swoole\Http\Response — La clase Swoole\Http\Response
  - Swoole\Http\Response::cookie — Define las cookies de la respuesta HTTP.
  - Swoole\Http\Response::__destruct — Destruye la respuesta HTTP.
  - Swoole\Http\Response::end — Envía los datos para la petición HTTP y termina la respuesta.
  - Swoole\Http\Response::gzip — Activa la compresión gzip del contenido de la respuesta.
  - Swoole\Http\Response::header — Define los encabezados de respuesta HTTP.
  - Swoole\Http\Response::initHeader — Inicializa el encabezado de respuesta HTTP.
  - Swoole\Http\Response::rawcookie — Define las cookies sin formato de la respuesta HTTP.
  - Swoole\Http\Response::sendfile — Envía un fichero a través de la respuesta HTTP.
  - Swoole\Http\Response::status — Define el código de estado de la respuesta HTTP.
  - Swoole\Http\Response::write — Añade el contenido del cuerpo HTTP a la respuesta HTTP.
- Swoole\Http\Server — La clase Swoole\Http\Server
  - Swoole\Http\Server::on — Vincula una retrollamada al servidor HTTP por nombre de evento.
  - Swoole\Http\Server::start — Inicia el servidor HTTP swoole.
- Swoole\Lock — La clase Swoole\Lock
  - Swoole\Lock::__construct — Construye un bloqueo de memoria.
  - Swoole\Lock::__destruct — Destruye un bloqueo de memoria Swoole.
  - Swoole\Lock::lock — Intenta adquirir el bloqueo. Bloqueará si el bloqueo no está disponible.
  - Swoole\Lock::lock_read — Bloquea un bloqueo de lectura-escritura para la lectura.
  - Swoole\Lock::trylock — Intenta adquirir el bloqueo y devuelve inmediatamente incluso si el bloqueo no está disponible.
  - Swoole\Lock::trylock_read — Intenta bloquear un bloqueo de lectura-escritura para la lectura y devuelve inmediatamente incluso si el bloqueo no está disponible.
  - Swoole\Lock::unlock — Libera el bloqueo.
- Swoole\Mmap — La clase Swoole\Mmap
  - Swoole\Mmap::open — Mapea un fichero en memoria y devuelve el recurso de flujo que puede ser utilizado por las operaciones de flujo PHP.
- Swoole\MySQL — La clase Swoole\MySQL
  - Swoole\MySQL::close — Cierra la conexión MySQL asíncrona.
  - Swoole\MySQL::connect — Conecta al servidor MySQL remoto.
  - Swoole\MySQL::__construct — Construye un cliente MySQL asíncrono.
  - Swoole\MySQL::__destruct — Destruye el cliente MySQL asíncrono.
  - Swoole\MySQL::getBuffer — Descripción
  - Swoole\MySQL::on — Registra una retrollamada basada en el nombre del evento.
  - Swoole\MySQL::query — Ejecuta la consulta SQL.
- Swoole\MySQL\Exception — La clase Swoole\MySQL\Exception
- Swoole\Process — La clase Swoole\Process
  - Swoole\Process::alarm — Temporizador de alta precisión que dispara una señal a intervalo fijo.
  - Swoole\Process::close — Cierra el tubo hacia el proceso hijo.
  - Swoole\Process::__construct — Construye un proceso.
  - Swoole\Process::daemon — Cambia el proceso a un proceso daemon.
  - Swoole\Process::__destruct — Destruye el proceso.
  - Swoole\Process::exec — Ejecuta un comando del sistema.
  - Swoole\Process::exit — Detiene los procesos hijos.
  - Swoole\Process::freeQueue — Destruye la cola de mensajes creada por swoole_process::useQueue.
  - Swoole\Process::kill — Envía una señal al proceso hijo.
  - Swoole\Process::name — Define el nombre del proceso.
  - Swoole\Process::pop — Lee y extrae datos de la cola de mensajes.
  - Swoole\Process::push — Escribe y empuja datos en la cola de mensajes.
  - Swoole\Process::read — Lee los datos enviados al proceso.
  - Swoole\Process::signal — Envía un signal a los procesos hijos.
  - Swoole\Process::start — Inicia el proceso.
  - Swoole\Process::statQueue — Devuelve las estadísticas de la cola de mensajes utilizada como método de comunicación entre los procesos.
  - Swoole\Process::useQueue — Crear una cola de mensajes como método de comunicación entre el proceso padre y los procesos hijos.
  - Swoole\Process::wait — Espera los eventos de los procesos hijos.
  - Swoole\Process::write — Escribe datos en el tubo y comunica con el proceso padre o los procesos hijos.
- Swoole\Redis\Server — La clase Swoole\Redis\Server
  - Swoole\Redis\Server::format — Descripción
  - Swoole\Redis\Server::setHandler — Descripción
  - Swoole\Redis\Server::start — Descripción
- Swoole\Runtime — La clase Swoole\Runtime
  - Swoole\Runtime::enableCoroutine — Habilitar corrutinas para funciones específicas
  - Swoole\Runtime::getHookFlags — Obtiene los flags de hook actuales
  - Swoole\Runtime::setHookFlags — Establece los flags de hook para corrutinas
- Swoole\Serialize — La clase Swoole\Serialize
  - Swoole\Serialize::pack — Serializa los datos.
  - Swoole\Serialize::unpack — Deserializa los datos.
- Swoole\Server — La clase Swoole\Server
  - Swoole\Server::addlistener — Añade un nuevo observador al servidor.
  - Swoole\Server::addProcess — Añade un swoole_process definido por el usuario al servidor.
  - Swoole\Server::after — Dispara una retrollamada después de un período de tiempo.
  - Swoole\Server::bind — Vincula la conexión a un identificador de usuario definido por el usuario.
  - Swoole\Server::clearTimer — Destruye y detiene un temporizador.
  - Swoole\Server::close — Cierra una conexión con el cliente.
  - Swoole\Server::confirm — Verifica el estado de la conexión.
  - Swoole\Server::connection_info — Devuelve la información de conexión por la descripción del fichero.
  - Swoole\Server::connection_list — Devuelve todas las conexiones establecidas.
  - Swoole\Server::__construct — Construye un servidor Swoole.
  - Swoole\Server::defer — Retrasa la ejecución de la función de retrollamada al final del ciclo de eventos actual.
  - Swoole\Server::exist — Verifica si la conexión existe.
  - Swoole\Server::finish — Utilizado en el proceso de tarea para enviar el resultado al proceso de trabajo cuando la tarea está terminada.
  - Swoole\Server::getClientInfo — Devuelve la información de conexión por la descripción del fichero.
  - Swoole\Server::getClientList — Devuelve todas las conexiones establecidas.
  - Swoole\Server::getLastError — Devuelve el código de error del último error.
  - Swoole\Server::heartbeat — Verifica todas las conexiones en el servidor.
  - Swoole\Server::listen — Escucha en la IP y el puerto dados, tipo de socket.
  - Swoole\Server::on — Registra una retrollamada por nombre de evento.
  - Swoole\Server::pause — Detiene la recepción de datos de la conexión.
  - Swoole\Server::protect — Pone la conexión en modo protegido.
  - Swoole\Server::reload — Reinicia todos los procesos de trabajo.
  - Swoole\Server::resume — Reanuda la recepción de datos desde la conexión.
  - Swoole\Server::send — Envía datos al cliente.
  - Swoole\Server::sendfile — Envía un fichero a la conexión.
  - Swoole\Server::sendMessage — Envía un mensaje a los procesos de trabajo por ID.
  - Swoole\Server::sendto — Envía datos a la dirección UDP remota.
  - Swoole\Server::sendwait — Envía datos al socket remoto de manera bloqueante.
  - Swoole\Server::set — Define los parámetros de ejecución del servidor swoole.
  - Swoole\Server::shutdown — Detiene el proceso del servidor maestro, esta función puede ser llamada en los procesos de trabajo.
  - Swoole\Server::start — Inicia el servidor Swoole.
  - Swoole\Server::stats — Devuelve las estadísticas del servidor Swoole.
  - Swoole\Server::stop — Detiene el servidor Swoole.
  - Swoole\Server::task — Envía datos a los procesos de trabajo de tarea.
  - Swoole\Server::taskwait — Envía datos a los procesos de trabajo de tarea de manera bloqueante.
  - Swoole\Server::taskWaitMulti — Ejecuta varias tareas en paralelo.
  - Swoole\Server::tick — Repite una función dada a cada intervalo de tiempo dado.
- Swoole\Table — La clase Swoole\Table
  - Swoole\Table::column — Define el tipo de datos y el tamaño de las columnas.
  - Swoole\Table::__construct — Construye una tabla de memoria Swoole de tamaño fijo.
  - Swoole\Table::count — Cuenta las filas en la tabla, o cuenta todos los elementos en la tabla si $mode = 1.
  - Swoole\Table::create — Crear la tabla de memoria swoole.
  - Swoole\Table::current — Devuelve la fila actual.
  - Swoole\Table::decr — Disminuye el valor en la tabla Swoole por $key y $column
  - Swoole\Table::del — Elimina una fila en la tabla Swoole mediante $key
  - Swoole\Table::destroy — Destruye la tabla Swoole.
  - Swoole\Table::exist — Verifica si una fila existe por $row_key.
  - Swoole\Table::get — Devuelve el valor en la tabla Swoole mediante $key y $field.
  - Swoole\Table::incr — Incrementa el valor por $key y $column
  - Swoole\Table::key — Devuelve la clave de la fila actual.
  - Swoole\Table::next — Avanza el iterador a la siguiente fila
  - Swoole\Table::rewind — Reinicializa el iterador.
  - Swoole\Table::set — Actualiza una línea de la tabla mediante $key.
  - Swoole\Table::valid — Verifica si la línea actual es válida.
- Swoole\Timer — La clase Swoole\Timer
  - Swoole\Timer::after — Dispara una retrollamada después de un período de tiempo.
  - Swoole\Timer::clear — Elimina un temporizador por ID de temporizador.
  - Swoole\Timer::exists — Verifica si un temporizador existe.
  - Swoole\Timer::tick — Repite una función dada en cada intervalo de tiempo dado.
- Swoole\WebSocket\Frame — La clase Swoole\WebSocket\Frame
- Swoole\WebSocket\Server — La clase Swoole\WebSocket\Server
  - Swoole\WebSocket\Server::exist — Verifica si el descriptor de fichero existe.
  - Swoole\WebSocket\Server::on — Registra la función de retrollamada del evento
  - Swoole\WebSocket\Server::pack — Devuelve un paquete de datos binarios para enviar en una sola trama.
  - Swoole\WebSocket\Server::push — Envía los datos al cliente remoto.
  - Swoole\WebSocket\Server::unpack — Descomprime los datos binarios recibidos del cliente.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open