Loading:

Książka Zend Framework 3. Poradnik Programisty.

proc_open
resource proc_open ( string $cmd , array $descriptorspec , array &$pipes [, string $cwd [, array $env [, array $other_options ]]] )

Jest podobna do popen() ale dostarcza znacznie większy stopień kontroli nad wykonywanym programem



Parametry

 

cmd - Komenda do wykonania


descriptorspec - Indeksowana tablica gdzie klucz reprezentuje numer hasła a wartość reprezentuje jak PHP dostarcza to hasło do dziecka procesu.

0 - stdin (wejście), 1- stdout (wyjscie),  podczas gdy 2- stdrr.

Każdy element może być:

Tablicą opisującą kanał przejścia do procesu. Pierwszym element jest hasło Typ, drugim elementem jest opcja dla danego typu. Ważnymi typami są kanał i plik

Strumień źródła reprezentującego prawdziwe hasło plik (np. otwarcie pliku, gniazda, STDIN)

Liczba hała plik jest nie ograniczone do 0, 1 i 2- możesz określić każdą ważną liczbę  plik  i zostanie ona przekazana do dziecka porcesu. To pozwala skryptowi na interpretacje w inych skryptach jako "co-processes".

W praktyce, jest to użyteczne dla przychodzącego hasła do programów takich jak PGP, GPG, openssl w bardziej bezpieczny sposób. Jest też użyteczne dla odczytu informacji dostarczanych za pomocą tamtych programów przez te programy pomocnicze na deskryptorów plików. 

 

pipes - Będzie ustawiony na indeksowaną tablicę plików odpowiadających końcowemu PHP każdego utworzonego kanału



cwd - Początkowy katalog roboczy dla komendy. Mysi być bezpośrednią ścieżką do katalogu, lub NULL jeśli chcesz użyć wartości domyślenej


env - Tablica  ze zmiennymi środowiskowymi dla komendy do odpalenia, lub NULL aby użyć tego samoge środowiska jako bieżącego prodcesu PHP


other_options - Pozwala na określenie dodatkowych opcji. Obecnie wspierane opcje obejmują:

- suppress_errors (tyko windows): pomija błędy generowane przez tą funkcję jeśli ustawiony na TRUE

- bypass_shell (tylko windows): omija shel cmd.exe jeśłi ustawiony na TRUE

- context: strumień użyty gdy otwiera plik (utworzony w stream_context_create() )

- binary_pipes: otwiera kanał w trybie binarnym, zamiast przy użyciu zwykłej stream_encoding


Zwracane wartości


Zwraca źródło reprezentujące proces, któy powinien być uwolniony za pomocą proc_close() kiedy z nim skończysz. W przypadku błędu zwraca FALSE





Napisz Artykuł

Listing


//Przykład #1 A proc_open() example
<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);

$cwd = '/tmp';
$env = array('some_option' => 'aeiou');

$process = proc_open('php', $descriptorspec, $pipes, $cwd, $env);

if (is_resource($process)) {
    // $pipes teraz wygląda tak:
    // 0 => zapisywalny uchwyt połączenia do dziecka STDIN
    // 1 => odczytywalny uchwyt połączenia do dziecka STDOUT
    // Każdy błąd wyjścia zostanie dołączony do /tmp/error-output.txt

    fwrite($pipes[0], '<?php print_r($_ENV); ?>');
    fclose($pipes[0]);

    echo stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    // Jest to ważne jeśli zamkniesz wszystkei kanały przed wywołaniem
    // proc_close aby uniknąć impasu
    $return_value = proc_close($process);

    echo "command returned $return_value\n";
}
?>

//Powyższy przykład wyświetli coś podobnego do:

Array
(
    [some_option] => aeiou
    [PWD] => /tmp
    [SHLVL] => 1
    [_] => /usr/local/bin/php
)
command returned 0

 


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=3&t=2334

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors