PHP – több parancs futtatása egy scriptből – egyidőben

Ha Linuxon PHP-CLI-ben egy scripten belül egyidőben szeretnénk több kódrészletet futtatni, akkor a

pcntl_fork();

funkcióra van szükségünk.

Egy nagyon egyszerű példa, ahol a ‘szülő folyamat’ 5, a ‘gyermek folyamat’ pedig 2 másodpercenként írja ki a nevét [ennek semmi értelme nincs, de a demonstrálás érdekében valamit ki kellett találni. Maga a fork tökéletes például Socket-ek használatakor]:

<?php
$pid = pcntl_fork();
 
if ($pid == -1) {
 die("Fork hiba\n"); // ha a PID -1, akkor a fork közben hiba történt, nem tudunk gyermekfolyamatot létrehozni
} else if ($pid) {
// Szülő folyamat
 
while (true)
{
echo "[Szülő] "; sleep(5);
}
 
} else {
// Gyermek folyamat
 
while (true)
{
echo "[Gyermek]"; sleep(2);
}
 
}
?>

Figyelem: csak UNIX rendszereken működik!

4 HOZZÁSZÓLÁS

  1. hy.
    Valaki tud mondani egy kicsit reálisabb felhasználási lehetőséget erre?
    Mert nem túl tiszta, hogy mikor szükséges ez.

  2. Sziasztok!

    Lehet egy kérésem?
    Engem annyiban érdekelne a téma, hogy egy online játékomhoz kellene olyan, hogy ha a felhasználó kilép, akkor a háttérben még az elkezdett folyamatok, építés idejének számolása, itd. tovább fussanak. Belépéskor pedig a változásokat vissza is kapja.

HOZZÁSZÓLOK A CIKKHEZ

Kérjük, írja be véleményét!
írja be ide nevét