Підтримувані функції

TrueAsync адаптує 70+ стандартних PHP функцій для неблокуючої роботи в контексті корутин. Усі перелічені функції автоматично стають асинхронними при виклику всередині корутини. Поза корутиною вони працюють як зазвичай.


DNS

Функція Опис
gethostbyname() Розв’язання імені хоста в IP-адресу
gethostbyaddr() Зворотне розв’язання IP-адреси в ім’я хоста
gethostbynamel() Отримання списку IP-адрес для імені хоста

Бази даних

PDO MySQL

Функція Опис
PDO::__construct() Неблокуюче підключення
PDO::prepare() Підготовка запиту
PDO::exec() Виконання запиту
PDOStatement::execute() Виконання підготовленого запиту
PDOStatement::fetch() Отримання результатів

PDO PgSQL

Функція Опис
PDO::__construct() Неблокуюче підключення
PDO::prepare() Підготовка запиту
PDO::exec() Виконання запиту
PDOStatement::execute() Виконання підготовленого запиту
PDOStatement::fetch() Отримання результатів

Пул з’єднань PDO

Прозорий пул з’єднань для PDO через інтеграцію з Async\Pool. Кожна корутина отримує власне з’єднання з пулу з автоматичним керуванням життєвим циклом.

MySQLi

Функція Опис
mysqli_connect() Неблокуюче підключення
mysqli_query() Виконання запиту
mysqli_prepare() Підготовка запиту
mysqli_stmt_execute() Виконання підготовленого запиту
mysqli_fetch_*() Отримання результатів

PostgreSQL (нативний)

Функція Опис
pg_connect() Неблокуюче підключення
pg_query() Виконання запиту
pg_prepare() Підготовка запиту
pg_execute() Виконання підготовленого запиту
pg_fetch_*() Отримання результатів

Кожен async-контекст використовує окреме з’єднання для безпечної конкурентності.


CURL

Функція Опис
curl_exec() Виконання запиту
curl_multi_exec() Виконання кількох запитів
curl_multi_select() Очікування активності
curl_multi_getcontent() Отримання вмісту
curl_setopt() Встановлення параметрів
curl_getinfo() Отримання інформації про запит
curl_error() Отримання помилки
curl_close() Закриття дескриптора

Сокети

Функція Опис
socket_create() Створення сокета
socket_create_pair() Створення пари сокетів
socket_connect() Підключення
socket_accept() Прийняття з’єднання
socket_read() Читання даних
socket_write() Запис даних
socket_send() Відправка даних
socket_recv() Отримання даних
socket_sendto() Відправка за адресою
socket_recvfrom() Отримання за адресою
socket_bind() Прив’язка до адреси
socket_listen() Прослуховування
socket_select() Моніторинг активності сокетів

Файловий та потоковий ввід-вивід

Функція Опис
fopen() Відкриття файлу
fclose() Закриття файлу
fread() Читання з файлу
fwrite() Запис у файл
fgets() Читання рядка
fgetc() Читання символу
fgetcsv() Читання CSV-рядка
fputcsv() Запис CSV-рядка
fseek() Встановлення позиції
ftell() Отримання позиції
rewind() Скидання позиції
ftruncate() Обрізка файлу
fflush() Скидання буферів
fscanf() Форматоване читання
file_get_contents() Читання всього файлу
file_put_contents() Запис всього файлу
file() Читання файлу в масив
copy() Копіювання файлу
tmpfile() Створення тимчасового файлу
readfile() Виведення файлу
fpassthru() Виведення залишку файлу
stream_get_contents() Читання залишку потоку
stream_copy_to_stream() Копіювання між потоками

Потокові сокети

Функція Опис
stream_socket_client() Створення клієнтського з’єднання
stream_socket_server() Створення серверного сокета
stream_socket_accept() Прийняття з’єднання
stream_select() Моніторинг активності потоків
stream_context_create() Створення контексту з підтримкою async

Обмеження: stream_select() з pipe-потоками (наприклад, від proc_open()) не підтримується у Windows. На Linux/macOS працює через event loop.


Запуск процесів

Функція Опис
proc_open() Відкриття процесу з pipe-каналами
proc_close() Закриття процесу
exec() Виконання зовнішньої команди
shell_exec() Виконання команди через оболонку
system() Виконання системної команди
passthru() Виконання з прямим виведенням

Таймери та затримки

Функція Опис
sleep() Затримка в секундах
usleep() Затримка в мікросекундах
time_nanosleep() Затримка з наносекундною точністю
time_sleep_until() Очікування до вказаного часу

Буферизація виведення

Кожна корутина отримує ізольований буфер виведення.

Функція Опис
ob_start() Початок буферизації
ob_flush() Скидання буфера
ob_clean() Очищення буфера
ob_get_contents() Отримання вмісту буфера
ob_end_clean() Завершення буферизації

Ще не підтримується

Функції, що заплановані до реалізації або ще не адаптовані.

DNS

Функція Опис
dns_check_record() / checkdnsrr() Перевірка DNS-запису
dns_get_mx() / getmxrr() Отримання MX-записів
dns_get_record() Отримання DNS-записів довільного типу

Бази даних

Розширення Опис
PDO ODBC Драйвер ODBC
PDO Oracle Драйвер Oracle
PDO SQLite Драйвер SQLite
PDO Firebird Драйвер Firebird
MongoDB Клієнт MongoDB

Файлові операції (метадані)

Функція Опис
flock() Блокування файлів
opendir() / readdir() / closedir() Робота з каталогами
unlink() / rename() Видалення та перейменування файлів
mkdir() / rmdir() Створення та видалення каталогів
stat() / lstat() Інформація про файли
readlink() Читання символічних посилань

Примітка: Файлові операції з метаданими на локальному диску виконуються за мікросекунди. Їх асинхронність має сенс лише при роботі з мережевими файловими системами (NFS).


Що далі?