Sziasztok!
Az alap problémám: szeretnék weboldalról indítani egy PHP szkriptet, de mivel túl sokáig fut, ezért egyszerűen kitaláltam, hogy elindítok exec()-cel egy másik szkriptet, ami a feldolgozást végzi, és visszatérek. A háttérben futó szkript működéséről pedig naplót írok.
Namost perl-ben ez úgy működik, hogy az exec nem várja meg, amíg lefut a másik processz, a system meg ugye child-ot indít és megvárja annak futását. Próbálgattam tesztelni de PHP-ben ez valahogy nem megy:
hivo.php
<?PHP
exec('/usr/bin/php ./hivott.php');
?>
hivott.php
<?PHP
sleep(30);
naplozok("Teszt üzenet");
?>
Tehát ugye azt szeretném, ha a hivo.php-t elindítom, akkor térjen vissza a parancssorba azonnal (egyelőre itt próbálkozom). De nem tér vissza sem exec, sem system esetén. Ha hagyom lefutni, akkor minden működik, 30 másodperc után naplóz, de nekem nem ez kell. Hogyan tudom megcsinálni azt, amit eredetileg szeretnék?
;-(
- 1203 megtekintés
Hozzászólások
exec('/usr/bin/php ./hivott.php &');
?
- A hozzászóláshoz be kell jelentkezni
Bocs, elfelejtettem írni hogy ezt is próbáltam, negatív. :-(
Próbáltam escape-elve is, hátha lenyeli a konzol, az se de nem ment.
;-(
- A hozzászóláshoz be kell jelentkezni
Talan ez segit, idezet az exec() PHP manualbol:
Megjegyzés: Ezzel a függvénnyel elindított de háttérben futó program kimenetét mindenképpen fájlba vagy valamilyen más kimeneti csatornába kell átirányítani. Ellenkező esetben a PHP várakozni fog addig, amíg a program futása be nem fejeződik.
- A hozzászóláshoz be kell jelentkezni
Aha, kösz, a honlapon néztem és 3 warning és 4 note között ezt valahogy nem olvastam el. Egyébként nem működik, ha simán átirányítod; de a
<?PHP
exec('/usr/bin/php ./hivott.php > /dev/null &');
?>
már működik, köszi. A perlben ez azért egyszerűbb... sigh.
;-(
- A hozzászóláshoz be kell jelentkezni