shell_exec () PHP

3 Cevap php
<?php
  // Execute a shell script
  $dump = shell_exec('bigfile.sh'); // This script takes some 10s to complete execution
  print_r($dump); // Dump log to screen
?>

Yukarıdaki komut tarayıcıdan çalıştırıldığında, bu 10s ve dökümleri için ekrana komut dosyası çıkışını yükler. Bu, tabii ki, normaldir. Ben, gerçek-zamanlı olarak ekranda görüntülenecek kabuk tarafından STDOUT yazılı verileri istiyorsanız, bunu yapabileceğini bir yol var mı?

3 Cevap

passthru() veya popen() Dene

Kod şöyle bir şey olacaktır:

<?php 
        $fp=popen("bigfile.sh","r");
        while (!feof($fp)) { 
                $results = fgets($fp, 256); 
                echo $result; 
                flush(); 
        } 
?> 

@ Wik Aşağıda önermek gibi yerine de benzer bir şekilde çalışması gerekir popen arasında proc_open deneyebilirsiniz.

Passthru () veya popen deneyin eğer daha önce belirtildiği gibi (), eğer ihtiyacınız varsa, size komut yürütme üzerinde daha fazla kontrolü verir () proc_open eklersiniz.

Bu deneyin:

$handle = proc_open('bigfile.sh', array(0 => STDIN, 1 => STDOUT, 2 => STDERR), $pipes);
$status = proc_close($handle);

Bu benim için harika çalışıyor.