CompZone.Org :: Artykuły :: Inne
Pytania w drugiej edycji Testu PHP powinny być:
Trudniejsze
Łatwiejsze
Skomplikowane
Na myślenie
Do liczenia
Sonda Wyniki

Add to Google

Skrypty PHP jako skrypty powłoki

Skrypty powłoki są to skrypty interpretowane podczas uruchamiania, wykonujące pewne czynności. W systemach Unix czy Linux skrypty te są bardzo często wykorzystywane. W systemach Windows też są czasem używane, są to proste skrypty zwane Batch Files

Co to są skrypty powłoki ?

Najprostszym językiem mówiąc, są to skrypty interpretowane podczas uruchamiania, wykonujące pewne czynności. W systemach Unix czy Linux skrypty te są bardzo często wykorzystywane. W systemach Windows też są czasem używane, są to proste skrypty zwane Batch Files (pliki bat). Dają one jednak znacznie mniej możlowiści niż skrypty pisane w systemach klasy *nix (zwane także skryptami shella). W czym można pisać takie skrypty. Najczęściej pisze się je używając albo czystych komend powłoki, wtedy interpretuje je interpreter sh, albo używając powłoki/interpretera bash (lub innej - tsh, csh). Często spotyka się także skrypty w Perlu, a coraz częściej w Pythonie. Nie wiele osób jednak wie, że takie skrypty można tworzyć także w PHP.

Jak tworzyć skrypty shella w PHP?

Skrypty powłoki nie różnią się zasadniczo składnią od zwykłych skryptów w PHP. Jedyną różnicą jest to, że uruchamiane są one z innymi prawami i w innym środowisku. Szczególnie pamiętać o tym należy w systemach *nix, gdyż zwracają one większą uwagę na prawa wykonywania niż systemy Microsoftu. W systemie Linux (a także unix i podobych) warto dodać jedną linijkę tekstu na samym początku, która określa miejsce parsera PHP.

#!/usr/bin/php -q

Dzięki temu po nadaniu skryptowi praw wykonywalności możeby go uruchamiać jak każdy program, nie martwiąc się o podanie skryptu do interpretera. Jeśli nie chcemy nadać skryptowi praw wykonania lub pracujemy w systemie Windows, jedynym sposobem jest uruchomienie interpretera php podając skrypt jako parametr. (Najlepiej w takim przypadku dodać ścieżkę interpretera - php.exe lub php-cgi.exe w zależności od wersji - do zmiennej środowiskowej PATH).

#php -q skrypt.php

Jak pewnie każdy zauważył, przekazuje także do parsera parametr -q. Parametr ten wymusza uruchomienie cichego trybu. Gdybyśmy uruchomili skrypt be parametru wyświetlony zostałby nagłówek PHP, który w zalezności od wersji może wyglądać tak:

Content-type: text/html
X-Powered-By: PHP/5.0.3

Tworzymy skrypt

Stwórzmy teraz prosty skrypt, który pokaże, że w wyświetlaniu tekstu nie ma żadnej różnicy. Skrypt typu helloworld, wyświetli tekst "Witaj swiecie" i zakończy swoje działanie.

 #!/usr/bin/php -q
<?php
echo "Witaj swiecien";
?>

Skrypty te dają duże możliwości, ale co byłoby jeśli chcielibyśmy aby użytkownik mógł wpisać jakieś dane? Oczywiście w skryptach PHP możemy także korzystać ze standardowego wejścia, jak i wyjścia błędów. Ponższy przykład demonstruje jego wykorzystanie.

 #!/usr/bin/php -q<?php
<?
php
//Stworzenie strumienia odpowiadającego za czytanie ze standardowego wejścia
$in = fopen('php://stdin','r');
echo 'Jak sie nazywasz?'."n";
//Pobranie linii ze standardowego wejścia
$line = fgets($in,1024);
echo 'Milo mi cię poznac, '.$line."nn";
//Zamknięcie strumienia
fclose($in);

//Otwarcie strumienia odpowiadającego za pisanie na standardowe wyjście błędów
$err = fopen('php://stderr','w');
//Wypisanie błędu
fwrite($err, 'Uwaga, nie znana osoba'."n");
//Zamknięcie strumienia
fclose($err);
?>

Jak widać na strumieniach wejścia/wyjścia możemy działać tak samo jak na plikach. Standardowo jest jeszcze oczywiście strumień stdout, odpowiedzialny za standardowe wyjście, jednak użycie funkcji echo jest szybsze i nie ma konieczności tworzenia strumienia. Jak łatwo się domyślić ze stdin możemy tylko czytać, a na strumienie stdout i stderr tylko pisać.

Zakończenie

Skrypty pisane w PHP mogą się także przydać w naszej codziennej pracy. Mogą automatycznie wyszukiwać śmieci i usuwać je (jeśli mają uprawnienia). Możliwości wykorzystania skryptów w PHP jest mnóstwo. Myśle, że każdy z czytelników ma już wiele pomysłów jak może sobie uprościć życie używając skryptów powłoki napisanych w PHP.

Kodie @ 29-06-2006 10:49
Brak komentarzy...
Copyright © 2005-2006 Compzone.Org. Kopiowanie i wykorzystywanie materiałów zawartych na tej stronie bez zgody autora zabronione!