Здравствуйте пользователи habr.
Как известно в php много-поточность (threads) не очень хорошо развета, следовательно скрипт должен работать в одно-поточном режиме и любая долгая задача не должна останавливать его выполнение.
Я хочу иметь возможность одновременно решать 3 задачи:
- Принимать новые подключения к серверу.
- Отправлять запросы на стороние ресурсы.
- Читать файлы на диске.
Все выше перечисленные задачи не должны тормозить выполнение скрипта.
Для решения задачи я использовал бы
stream.
Но моя проблема связана с чтением содержимого файла на диске.
Я гуглил асинхронное чтение файла с помошью php, и нашел вот такую функцию
swoole, но ее проблема в том, что она ожидает завершения callback-функции.
Мне необходимо чтение файла, но скрипт должен лишь создать 'задачу' чтения файла и не ждать когда файл будет успешно прочитан. (Когда содержимое будет получено - должна запускаться callback функция, и по ее завершению вся использованная память должна уничтожаться).
Все 'задачи' передаю в функцию
stream_select.
К сожалению примеров кода предоставить не могу, так как не имею понятия какую функцию вызывать для асинхронного чтения файла.
Примичание: возможно данная задача простая, и есть уже готовая функция асинхронного чтения используя stream, и я просто слепой.