PHP i uruchomienie procesu w tle
Posted on luty 26th, 2008 in linux, php |
Czasami zachodzi potrzeba, żeby z poziomu aplikacji WWW napisanej w PHP uruchomić jakąś czasochłonną operację. Może to być na przykład tworzenie kopii zapasowej jakichś danych.
Ponieważ taka operacja może trwać długo, jest bardzo prawdopodobne, że dojdzie do przekroczenia limitu wykonywania strony. W takim przypadku najlepiej uruchomić tą operację w tle.
Na pewnym forum znalazłem, że wystarczy użyć funkcji exec() i na końcu polecenia, które uruchamiamy dodać znak ampersanda &.
Jednak po wykonaniu skryptu widać, że nie działa on tak, jakbyśmy tego chcieli.
CODE:
-
$ php5 test.php
-
Koniec skryptu BASH
-
Koniec skryptu PHP
Aby rozwiązać problem należy posłużyć się innymi funkcjami: proc_open() i proc_close().
PHP:
-
<?php
-
echo "\nKoniec skryptu PHP\n";
-
?>
A wynik wygląda tak.
CODE:
-
$ php5 test.php
-
Koniec skryptu PHP
-
$
-
Koniec skryptu BASH