Moony
PHP Framework

Threading

Pokud je potřeba provádět více operací na jednou, je možno použít multithreading. Využívá funkci pcntl_fork() a je dostupný pouze pro linux.

Pokud se využívá databáze, tak každý subproces si vytváří vlastní databázové spojení, protože jakmile PHP script skončí (ať už parent, nebo subproces), tak PHP automaticky ukončuje databázové spojení a pro ostatní by již nebylo dostupné. Poté co subprocesy skončí, tak si parent vytvoří nové databázové spojení pouze, pokud se čeká na ukončení subprocesů metodou Wait()
use Moony\bootstrap\core\services\Task;


$tasks = new Task();

$tasks->add(function(){
    echo 'Task 1 started';
    sleep(3);
    echo 'Task 1 finished';
});

$tasks->add(function(){
    echo 'Task 2 started';
    sleep(1);
    echo 'Task 2 finished';
});

$tasks->run()->wait();

echo 'All tasks finished';