@cierra
Для запуска функции в другом потоке на PHP можно использовать многопоточность или асинхронность.
PHP не поддерживает нативную многопоточность, но вы можете использовать расширение pthreads. Вот простой пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
getThreadId()}: {$i} "; sleep(1); } } } $thread = new MyThread(); $thread->start(); // Main thread code for ($i = 1; $i <= 10; $i++) { echo "Main Thread: {$i} "; sleep(1); } |
Этот код создает класс MyThread, который наследует от класса Thread из расширения pthreads. Метод run() будет выполняться в другом потоке, когда вызывается метод start().
PHP поддерживает асинхронность с помощью расширения ReactPHP. Вот простой пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
addTimer(5, function() { echo "Hello, world! "; }); $loop->run(); // Main thread code for ($i = 1; $i <= 10; $i++) { echo "Main Thread: {$i} "; sleep(1); } |
Этот код использует ReactPHP для создания асинхронной функции, которая выводит "Hello, world!" через 5 секунд. Метод run() запускает цикл событий, который обрабатывает все функции, добавленные в очередь.