Archive for the ‘linux’ Category

PHP i uruchomienie procesu w tle

Posted on luty 26th, 2008 in linux, php | No Comments »

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 &.

PHP:
  1. <?php
  2.    echo exec("sleep 1 && echo Koniec skryptu BASH &");
  3.    echo "\nKoniec skryptu PHP\n";
  4. ?>

Jednak po wykonaniu skryptu widać, że nie działa on tak, jakbyśmy tego chcieli.

CODE:
  1. $ php5 test.php
  2. Koniec skryptu BASH
  3. Koniec skryptu PHP

Aby rozwiązać problem należy posłużyć się innymi funkcjami: proc_open() i proc_close().

PHP:
  1. <?php
  2.    proc_close(proc_open ("sleep 1 && echo Koniec skryptu BASH &", array(), $pipes));
  3.    echo "\nKoniec skryptu PHP\n";
  4. ?>

A wynik wygląda tak.

CODE:
  1. $ php5 test.php
  2. Koniec skryptu PHP
  3. $
  4. Koniec skryptu BASH

Linux

Posted on styczeń 21st, 2007 in linux, prywatne, ubuntu | 1 Comment »

Od dawna planowałem przejść z systemu Windows do Linuksa. I w końcu zdecydowałem się na ten krok. Po kilku tygodniach konfigurowania oraz szukania w Internecie przeróżnych i przedziwnych rzeczy, w końcu system działa mi tak, jak chciałem. :) Read the rest of this entry »