2015-07-19 6 views
6

करने के लिए एक प्रक्रिया से पाइप करने में असमर्थ हूं timer.php में मैं इस है:PHP में मैं एक और

$handle = fopen('php://stdout', 'wa') ;  
$unusedEvTimerObject = new EvTimer(0, 1, function ($watchercallback) use ($handle) { //create & call timer 
    echo "=>".(Ev::iteration() % 60)."<="; 
    fwrite($handle, "Hello World! \n"); 
}); 
    Ev::run(); 
fclose($handle); 

और child.php में मैं इस है:

$descriptorspec = array(
    0 => array("pipe", "r"), 
    1 => array("pipe", "w"),   
    2 => array("file", "/tmp/error-output.txt", "a") 
); 

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

if (is_resource($process)) { 
    fwrite($pipes[0], "<? include('app/timer.php'); ?>"); 
    fclose($pipes[0]); 

    $output = ""; 
    while (!feof($pipes[1])) { 
     $output .= fgets($pipes[1]); 
    }; 
    fclose($pipes[1]); 

    $return_value = proc_close($process); 

    echo "command returned $return_value\n"; 
} 

अगर मैं आह्वान

$ php एप्लिकेशन/timer.php

उत्पादन मैं के साथ प्रत्यक्ष timer.php "=> 1 < = नमस्ते विश्व है! => 2 < = हैलो वर्ल्ड! "

लेकिन अगर मैं $ php एप्लिकेशन/child.php साथ आह्वान मुझे कोई उत्पादन जबकि मैं child.php करने और इसके द्वारा मुद्रित किया जा रीडायरेक्ट करने के लिए timer.php से stdout उम्मीद थी मिलता है।

मैं थोड़ा & बह रहा हूं, मुझे लगता है कि child.php को कोई इनपुट नहीं मिल रहा है लेकिन मैं नहीं देख सकता क्यों। परिचय सहायता

+1

आप बच्चे को फ़ाइल में बफर में सभी उत्पादन पर कब्जा करने की कोशिश कर सकते, तो अंत में यह उत्पादन प्रिंट –

उत्तर

1

$ आउटपुट नमूना कोड में मुद्रित नहीं है।

while (!feof($pipes[1])) { 
    echo fgets($pipes[1]); 
}; 

$ कॉलिंग> php child.php तो टाइमर उत्पादन