# Модуль ввода-вывода Swoole

# Введение

Swoole — движок на C++ для параллельного сетевого взаимодействия, который работает на основе асинхронных событий и сопрограмм. Модуль добавляет в PHP сопрограммы и поддержку высокопроизводительного сетевого программирования. Swoole включает серверные и клиентские модули для взаимодействия по сетевым протоколам, что упрощает внедрение: служб на основе протоколов TCP и UDP, высокопроизводительных веб-служб и служб на основе протокола WebSocket, организацию IoT-сетей, программ взаимодействия в реальном времени, разработку игр, микросервисов и других сценариев. Модуль выводит PHP за рамки традиционных областей веб-разработки. Перед началом работы с модулем лучше изучить » Документацию к Swoole.

> Замечание: Для Windows-платформ этот модуль недоступен.

- Установка и настройка
  - Требования
  - Установка
  - Настройка во время выполнения
- Предопределённые константы
- Функции Swoole
  - swoole_async_dns_lookup — Асинхронный и неблокирующий поиск имени хоста или IP-адреса
  - swoole_async_read — Асинхронное чтение потока файла
  - swoole_async_readfile — Асинхронное чтение файла
  - swoole_async_set — Обновление опций асинхронного ввода-вывода
  - swoole_async_write — Асинхронная запись данных в поток файла
  - swoole_async_writefile — Асинхронная запись данных в файл
  - swoole_clear_error — Сбрасывает ошибки в сокете или по последнему коду ошибки
  - swoole_client_select — Получить описание файла, готового к чтению/записи или ошибке
  - swoole_cpu_num — Получить количество CPU
  - swoole_errno — Получить код ошибки последнего системного вызова
  - swoole_error_log — Выводит сообщения об ошибках в журнал
  - swoole_event_add — Добавить новых callback-функций сокета в цикл событий
  - swoole_event_defer — Добавить callback-функцию в следующий цикл событий
  - swoole_event_del — Удалить все callback-функции сокета
  - swoole_event_exit — Закрыть цикл событий, доступный только на стороне клиента
  - swoole_event_set — Обновить callback-функции события сокета
  - swoole_event_wait — Запустить цикл событий
  - swoole_event_write — Записать данные в сокет
  - swoole_get_local_ip — Получить IP-адреса в формате IPv4 каждой сетевой платы (NIC) компьютера
  - swoole_last_error — Получить последнее сообщение об ошибке
  - swoole_load_module — Загрузить модуль swoole
  - swoole_select — Выбрать описания файлов, которые готовы к чтению/записи или ошибке в цикл событий
  - swoole_set_process_name — Установить имя процесса
  - swoole_strerror — Сконвертировать Errno в сообщения об ошибках
  - swoole_timer_after — Запуск callback-функции один раз в будущем
  - swoole_timer_exists — Проверить, существует ли callback-функция таймера
  - swoole_timer_tick — Вызвать callback-функцию таймера тактов через определённый промежуток времени
  - swoole_version — Получить версию Swoole
- Swoole\Async — Класс Swoole\Async
  - Swoole\Async::dnsLookup — Асинхронный и неблокирующий поиск IP по имени хоста
  - Swoole\Async::read — Асинхронное чтение файлового потока
  - Swoole\Async::readFile — Асинхронное чтение файла
  - Swoole\Async::set — Обновляет параметры асинхронного ввода-вывода
  - Swoole\Async::write — Асинхронно записывает данные в файловый поток
  - Swoole\Async::writeFile — Описание
- Swoole\Atomic — Класс Swoole\Atomic
  - Swoole\Atomic::add — Добавляет число к значению атомарного объекта
  - Swoole\Atomic::cmpset — Сравнивает и устанавливает значение атомарного объекта
  - Swoole\Atomic::__construct — Инициализирует атомарный объект swoole
  - Swoole\Atomic::get — Получает текущее значение атомарного объекта
  - Swoole\Atomic::set — Устанавливает новое значение для атомарного объекта
  - Swoole\Atomic::sub — Вычитает число из значения атомарного объекта
- Swoole\Buffer — Класс Swoole\Buffer
  - Swoole\Buffer::append — Добавляет строку или двоичные данные в конец буфера памяти и возвращает новый размер выделенной памяти
  - Swoole\Buffer::clear — Сбрасывает буфер памяти
  - Swoole\Buffer::__construct — Фиксированный размер блока памяти
  - Swoole\Buffer::__destruct — Уничтожает буфер памяти Swoole
  - Swoole\Buffer::expand — Расширяет размер буфера памяти
  - Swoole\Buffer::read — Читает данные из буфера памяти на основе смещения и длины
  - Swoole\Buffer::recycle — Освобождает память для ОС, которая не используется буфером памяти
  - Swoole\Buffer::substr — Считывает данные из буфера памяти на основе смещения и длины. Или удаляет данные из буфера памяти
  - Swoole\Buffer::__toString — Получает строковое значение буфера памяти
  - Swoole\Buffer::write — Записывает данные в буфер памяти. Память, выделенная для буфера, не будет изменена
- Swoole\Channel — Класс Swoole\Channel
  - Swoole\Channel::__construct — Создаёт канал Swoole
  - Swoole\Channel::__destruct — Уничтожает канал Swoole
  - Swoole\Channel::pop — Читает и извлекает данные из канала Swoole
  - Swoole\Channel::push — Записывает и передаёт данные в канал Swoole
  - Swoole\Channel::stats — Получает статистику канала Swoole
- Swoole\Client — Класс Swoole\Client
  - Swoole\Client::close — Закрывает установленное соединение
  - Swoole\Client::connect — Подключается к удалённому TCP- или UDP-порту
  - Swoole\Client::__construct — Создаёт синхронный или асинхронный TCP/UDP клиент Swoole с поддержкой SSL или без него
  - Swoole\Client::__destruct — Уничтожает клиент Swoole
  - Swoole\Client::getpeername — Получает имя удалённого сокета соединения
  - Swoole\Client::getsockname — Получает локальное имя сокета соединения
  - Swoole\Client::isConnected — Проверяет, установлено ли соединение
  - Swoole\Client::on — Добавляет callback-функции, вызванные событиями
  - Swoole\Client::pause — Приостанавливает получение данных
  - Swoole\Client::pipe — Перенаправляет данные в другой файловый дескриптор
  - Swoole\Client::recv — Получает данные из удалённого сокета
  - Swoole\Client::resume — Возобновляет получение данных
  - Swoole\Client::send — Отправляет данные в удалённый TCP-сокет
  - Swoole\Client::sendfile — Отправляет файл в удалённый TCP-сокет
  - Swoole\Client::sendto — Отправляет данные на удалённый UDP-адрес
  - Swoole\Client::set — Устанавливает параметры клиента Swoole до установления соединения
  - Swoole\Client::sleep — Удаляет TCP-клиент из цикла системных событий
  - Swoole\Client::wakeup — Добавляет TCP-клиент обратно в цикл системных событий
- Swoole\Connection\Iterator — Класс Swoole\Connection\Iterator
  - Swoole\Connection\Iterator::count — Считает соединения
  - Swoole\Connection\Iterator::current — Возвращает текущую запись соединения
  - Swoole\Connection\Iterator::key — Возвращает ключ текущего соединения
  - Swoole\Connection\Iterator::next — Переходит к следующему соединению
  - Swoole\Connection\Iterator::offsetExists — Проверяет, существует ли смещение
  - Swoole\Connection\Iterator::offsetGet — Смещение для извлечения
  - Swoole\Connection\Iterator::offsetSet — Назначает соединение для указанного смещения
  - Swoole\Connection\Iterator::offsetUnset — Сбрасывает смещение
  - Swoole\Connection\Iterator::rewind — Перематывает итератор
  - Swoole\Connection\Iterator::valid — Проверяет правильность текущей позиции
- Swoole\Coroutine — Класс Swoole\Coroutine
  - Swoole\Coroutine::call_user_func — Вызывает callback-функцию, заданную первым параметром
  - Swoole\Coroutine::call_user_func_array — Вызывает callback-функцию с массивом параметров
  - Swoole\Coroutine::cli_wait — Описание
  - Swoole\Coroutine::create — Описание
  - Swoole\Coroutine::getuid — Описание
  - Swoole\Coroutine::resume — Описание
  - Swoole\Coroutine::suspend — Описание
- Swoole\Coroutine\Lock — Класс Swoole\Coroutine\Lock
  - Swoole\Coroutine\Lock::__construct — Создаёт новый объект блокировки сопрограммы
  - Swoole\Coroutine\Lock::lock — Захватывает блокировку, блокируя выполнение, если требуется
  - Swoole\Coroutine\Lock::trylock — Пытается захватить блокировку без блокировки выполнения
  - Swoole\Coroutine\Lock::unlock — Освобождает блокировку
- Swoole\Event — Класс Swoole\Event
  - Swoole\Event::add — Добавляет новые callback-функции сокета в EventLoop
  - Swoole\Event::defer — Добавляет callback-функцию в следующий цикл событий
  - Swoole\Event::del — Удаляет все callback-функции события сокета
  - Swoole\Event::exit — Выходит из цикла событий, доступно только на стороне клиента
  - Swoole\Event::set — Обновляет callback-функции события сокета
  - Swoole\Event::wait — Описание
  - Swoole\Event::write — Записывает данные в сокет
- Swoole\Exception — Класс Swoole\Exception
- Swoole\Http\Client — Класс Swoole\Http\Client
  - Swoole\Http\Client::addFile — Добавляет файл в форму сообщения
  - Swoole\Http\Client::close — Закрывает http-соединение
  - Swoole\Http\Client::__construct — Создаёт асинхронный HTTP-клиент
  - Swoole\Http\Client::__destruct — Уничтожает HTTP-клиент
  - Swoole\Http\Client::download — Загружает файл с удалённого сервера
  - Swoole\Http\Client::execute — Посылает HTTP-запрос после установки параметров
  - Swoole\Http\Client::get — Отправляет HTTP-запрос GET на удалённый сервер
  - Swoole\Http\Client::isConnected — Проверяет, подключено ли соединение HTTP
  - Swoole\Http\Client::on — Регистрирует callback-функцию по имени события
  - Swoole\Http\Client::post — Отправляет HTTP-запрос POST на удалённый сервер
  - Swoole\Http\Client::push — Передаёт данные в клиент websocket
  - Swoole\Http\Client::set — Обновляет параметры HTTP-клиента
  - Swoole\Http\Client::setCookies — Устанавливает cookies для HTTP-запроса
  - Swoole\Http\Client::setData — Устанавливает данные тела HTTP-запроса
  - Swoole\Http\Client::setHeaders — Устанавливает заголовки HTTP-запроса
  - Swoole\Http\Client::setMethod — Устанавливает метод HTTP-запроса
  - Swoole\Http\Client::upgrade — Обновление до протокола websocket
- Swoole\Http\Request — Класс Swoole\Http\Request
  - Swoole\Http\Request::__destruct — Уничтожает HTTP-запрос
  - Swoole\Http\Request::rawcontent — Получает необработанное тело HTTP POST
- Swoole\Http\Response — Класс Swoole\Http\Response
  - Swoole\Http\Response::cookie — Устанавливает cookie HTTP-ответа
  - Swoole\Http\Response::__destruct — Уничтожает HTTP-ответ
  - Swoole\Http\Response::end — Отправляет данные HTTP-запроса и завершает ответ
  - Swoole\Http\Response::gzip — Включает gzip-сжатие содержимого ответа.
  - Swoole\Http\Response::header — Устанавливает заголовки HTTP-ответа
  - Swoole\Http\Response::initHeader — Инициировать заголовок HTTP-ответа
  - Swoole\Http\Response::rawcookie — Устанавливает необработанные cookie в HTTP-ответ
  - Swoole\Http\Response::sendfile — Отправляет файл через HTTP-ответ
  - Swoole\Http\Response::status — Устанавливает код состояния HTTP-ответа
  - Swoole\Http\Response::write — Добавляет содержимое тела HTTP в HTTP-ответ
- Swoole\Http\Server — Класс Swoole\Http\Server
  - Swoole\Http\Server::on — Привязывает callback-функцию к HTTP-серверу по имени события
  - Swoole\Http\Server::start — Запускает http-сервер swoole
- Swoole\Lock — Класс Swoole\Lock
  - Swoole\Lock::__construct — Создаёт блокировку памяти
  - Swoole\Lock::__destruct — Уничтожает блокировку памяти Swoole
  - Swoole\Lock::lock — Пытается получить блокировку. Заблокируется, если блокировка недоступна
  - Swoole\Lock::lock_read — Блокирует чтение-запись блокировки для чтения
  - Swoole\Lock::trylock — Пытается получить блокировку и сразу возвращает, даже если блокировка недоступна
  - Swoole\Lock::trylock_read — Пытается заблокировать блокировку чтения-записи для чтения и сразу возвращает, даже если блокировка недоступна
  - Swoole\Lock::unlock — Снимает блокировку
- Swoole\Mmap — Класс Swoole\Mmap
  - Swoole\Mmap::open — Отобразить файл в память и вернуть ресурс потока, который может использоваться операциями потока PHP
- Swoole\MySQL — Класс Swoole\MySQL
  - Swoole\MySQL::close — Закрывает асинхронное соединение MySQL
  - Swoole\MySQL::connect — Подключается к удалённому серверу MySQL
  - Swoole\MySQL::__construct — Создаёт асинхронный клиент MySQL
  - Swoole\MySQL::__destruct — Уничтожает асинхронный клиент MySQL
  - Swoole\MySQL::getBuffer — Описание
  - Swoole\MySQL::on — Регистрирует callback-функцию на основе имени события
  - Swoole\MySQL::query — Выполняет запрос SQL
- Swoole\MySQL\Exception — Класс Swoole\MySQL\Exception
- Swoole\Process — Класс Swoole\Process
  - Swoole\Process::alarm — Таймер высокой точности, который запускает сигнал с фиксированным интервалом
  - Swoole\Process::close — Закрывает канал для дочернего процесса
  - Swoole\Process::__construct — Создаёт процесс
  - Swoole\Process::daemon — Изменяет процесс на процесс-демон
  - Swoole\Process::__destruct — Уничтожает процесс
  - Swoole\Process::exec — Выполняет системные команды
  - Swoole\Process::exit — Останавливает дочерние процессы
  - Swoole\Process::freeQueue — Уничтожает очередь сообщений, созданную swoole_process::useQueue
  - Swoole\Process::kill — Посылает сигнал дочернему процессу
  - Swoole\Process::name — Устанавливает название процесса
  - Swoole\Process::pop — Читает и извлекает данные из очереди сообщений
  - Swoole\Process::push — Записывает и помещает данные в очередь сообщений
  - Swoole\Process::read — Читает данные отправки в процесс
  - Swoole\Process::signal — Посылает сигнал дочерним процессам
  - Swoole\Process::start — Запускает процесс
  - Swoole\Process::statQueue — Получает статистику очереди сообщений, используемой в качестве метода связи между процессами
  - Swoole\Process::useQueue — Создаёт очередь сообщений в качестве метода связи между родительским процессом и дочерними процессами
  - Swoole\Process::wait — Ожидает событий дочерних процессов
  - Swoole\Process::write — Записывает данные в канал и связывается с родительским процессом или дочерними процессами
- Swoole\Redis\Server — Класс Swoole\Redis\Server
  - Swoole\Redis\Server::format — Описание
  - Swoole\Redis\Server::setHandler — Описание
  - Swoole\Redis\Server::start — Описание
- Swoole\Runtime — Класс Swoole\Runtime
  - Swoole\Runtime::enableCoroutine — Включает корутину для функций
  - Swoole\Runtime::getHookFlags — Получает текущие флаги хука
  - Swoole\Runtime::setHookFlags — Устанавливает флаги хука для корутины
- Swoole\Serialize — Класс Swoole\Serialize
  - Swoole\Serialize::pack — Сериализовать данные
  - Swoole\Serialize::unpack — Десериализовать данные
- Swoole\Server — Класс Swoole\Server
  - Swoole\Server::addlistener — Добавляет нового слушателя на сервер
  - Swoole\Server::addProcess — Добавляет определённый пользователем swoole_process на сервер
  - Swoole\Server::after — Запускает callback-функцию по истечении определённого периода времени
  - Swoole\Server::bind — Привязывает соединение к указанному идентификатору пользователя
  - Swoole\Server::clearTimer — Останавливает и уничтожает таймер
  - Swoole\Server::close — Закрывает соединение с клиентом
  - Swoole\Server::confirm — Проверяет состояние соединения
  - Swoole\Server::connection_info — Получает информацию о соединении по описанию файла
  - Swoole\Server::connection_list — Получает все установленные соединения
  - Swoole\Server::__construct — Создаёт сервер Swoole
  - Swoole\Server::defer — Откладывает выполнение callback-функции в конце текущего EventLoop
  - Swoole\Server::exist — Проверяет, существует ли соединение
  - Swoole\Server::finish — Используется в процессе задачи для отправки результата в рабочий процесс после завершения задачи
  - Swoole\Server::getClientInfo — Получает информацию о соединении по описанию файла
  - Swoole\Server::getClientList — Получает все установленные соединения
  - Swoole\Server::getLastError — Получает код самой последней ошибки
  - Swoole\Server::heartbeat — Проверяет все соединения на сервере
  - Swoole\Server::listen — Слушает по заданному IP и порту, тип сокета
  - Swoole\Server::on — Регистрирует callback-функцию по имени события
  - Swoole\Server::pause — Прекращает получение данных от соединения
  - Swoole\Server::protect — Устанавливает соединение в защищённый режим
  - Swoole\Server::reload — Перезапускает все рабочие процессы
  - Swoole\Server::resume — Начинает получать данные из соединения
  - Swoole\Server::send — Отправляет данные клиенту
  - Swoole\Server::sendfile — Отправляет файл на соединение
  - Swoole\Server::sendMessage — Отправляет сообщение рабочим процессам по идентификатору
  - Swoole\Server::sendto — Отправляет данные на удалённый UDP-адрес
  - Swoole\Server::sendwait — Отправляет данные в удалённый сокет блокирующим способом
  - Swoole\Server::set — Устанавливает настройки времени выполнения сервера swoole
  - Swoole\Server::shutdown — Завершает процесс главного сервера, функцию можно вызывать в рабочих процессах
  - Swoole\Server::start — Запускает сервер Swoole
  - Swoole\Server::stats — Получает статистику сервера Swoole
  - Swoole\Server::stop — Останавливает сервер Swoole
  - Swoole\Server::task — Отправляет данные в рабочие процессы задачи
  - Swoole\Server::taskwait — Посылает данные рабочим процессам задачи блокирующим способом
  - Swoole\Server::taskWaitMulti — Выполняет несколько задач одновременно
  - Swoole\Server::tick — Повторяет данную функцию в каждый заданный интервал времени
- Swoole\Table — Класс Swoole\Table
  - Swoole\Table::column — Устанавливает тип данных и размер столбцов
  - Swoole\Table::__construct — Создаёт таблицу памяти Swoole с фиксированным размером
  - Swoole\Table::count — Подсчитывает строки в таблице или подсчитывает все элементы в таблице, если $mode = 1
  - Swoole\Table::create — Создаёт таблицу в памяти модуля Swoole
  - Swoole\Table::current — Получает текущую строку
  - Swoole\Table::decr — Уменьшает значение в таблице модуля Swoole по ключу строки $key и названию столбца $column
  - Swoole\Table::del — Удаляет строку в таблице модуля Swoole по ключу $key
  - Swoole\Table::destroy — Уничтожает таблицу в памяти модуля Swoole
  - Swoole\Table::exist — Проверяет, существует ли строка по $row_key
  - Swoole\Table::get — Получает значение в таблице модуля Swoole по ключу $key и полю $field
  - Swoole\Table::incr — Увеличивает значение в таблице модуля Swoole по ключу строки $key и названию столбца $column
  - Swoole\Table::key — Получает ключ текущей строки
  - Swoole\Table::next — Перемещает итератор на следующую строку
  - Swoole\Table::rewind — Перематывает итератор
  - Swoole\Table::set — Обновляет строку таблицы по ключу $key
  - Swoole\Table::valid — Проверяет, является ли текущая строка корректной
- Swoole\Timer — Класс Swoole\Timer
  - Swoole\Timer::after — Запускает callback-функцию через определённый промежуток времени
  - Swoole\Timer::clear — Удаляет таймер по идентификатору
  - Swoole\Timer::exists — Проверяет, существует ли таймер
  - Swoole\Timer::tick — Повторяет данную функцию в каждый заданный интервал времени
- Swoole\WebSocket\Frame — Класс Swoole\WebSocket\Frame
- Swoole\WebSocket\Server — Класс Swoole\WebSocket\Server
  - Swoole\WebSocket\Server::exist — Проверяет, существует ли описание файла
  - Swoole\WebSocket\Server::on — Зарегистрировать callback-функцию события
  - Swoole\WebSocket\Server::pack — Получение пакета двоичных данных для отправки в одной группе данных (frame)
  - Swoole\WebSocket\Server::push — Отправить данные удалённому клиенту
  - Swoole\WebSocket\Server::unpack — Распаковать двоичные данные, полученные от клиента

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