Nasıl bir PHP komut dosyası başka başlatmak ve çıkışını yakalamak için?

2 Cevap php

Bu yüzden benimle ayı biraz zor:

  • I a.php Bu komut satırı ve veri STDIN aracılığı ile temin edilir başlatılan bir PHP komut dosyası var
  • Ben başka bir PHP komut dosyası var b.php
  • I a.php fırlatma b.php and capture its output istiyorum.
  • Ayrıca, a.php b.php ile STDIN iletmek zorunda

Bunu yapmanın kolay bir yolu var mı?

2 Cevap

For just capturing the stdout of another program (php or not), you can use backticks: http://php.net/manual/en/language.operators.execution.php. For example:

$boutput = `php b.php`;

Stdin yakalamak için, bu do:

$ainput = file_get_contents('php://stdin');

Finally, to pipe the contents of a string to an external program, use proc_open, as suggested by jeremy's answer. Specifically, here's what your a.php should contain:

$ainput = file_get_contents('php://stdin');
$descriptorspec = array(
        0 => array("pipe", "r"),
        1 => array("pipe", "w"),
        2 => array("pipe", "w")
);
$process = proc_open('php b.php', $descriptorspec, $pipes);
fwrite($pipes[0], $ainput);
fclose($pipes[0]);
echo stream_get_contents($pipes[1]); # echo output of "b.php < stdin-from-a.php"
fclose($pipes[1]);
proc_close($process);