Kol 0 (ar, pvz. SSH atveju tai gal būtų 3) kanalas neuždarytas -
programa laukia ir nieko nevykdo.
Tai ko galima, tokiu atveju, tikėtis iš jos grįžtant?
> rašome
- uždarome STDIN
< skaitome iš STDOUT / STDERR ...
- įvertiname duomenis
- jei reikia - vėl atidarome STDIN
> rašome dar ką nors
--
JB
2010.02.23 22:48, flegmatoid rašė:
> sveiki - reikia bi-directional rysio tarp konkretaus proceso (pvz ssh, ftp, mysql) ir php dalies, tam, kad suserti eile komandu, po kiekvienos nuskaitant konsoles output'a.
>
> Kas idomiausia - viskas kaip ir veikia, taciau stdout'a gaunu tik uzdares stdin'a (pipe[0]) :\ - gugleje rodo keleta panasiu klausimu - tik, deja, be atsakymu.
>
> bandau suvokti - kokia tuomet proc_open funkcijos prasme?
>
> <?php
> $descriptorspec = array(
> 0 => array("pipe", "r"),
> 1 => array("pipe", "w"),
> 2 => array("pipe", "r")
> );
>
> $process = proc_open('mysql -u root', $descriptorspec, $pipes);
>
> if (is_resource($process)) {
> //stream_set_blocking($pipes[0],0);
> //stream_set_blocking($pipes[1],0);
>
> fwrite($pipes[0], "show databases;\n");
> sleep(1);
> //fclose($pipes[0]); - veikia tik atkomentavus sia eilute.
> $rez=stream_get_contents($pipes[1]);
> echo "[$rez]";
> //fclose($pipes[1]);
> proc_close($process);
> }
> ?>
>
> isbandyta ir po fbsd ir po windoze.
> php 5.2.12 ir 5.3.0
>
> dekui uz mintis