2016-03-04 141 views
1

答案這是一個簡單的PHP代碼無法擺脫中繼

<?php 
ob_start(passthru('/usr/bin/env node getResult.js ')); 
$data = ob_get_contents(); 
ob_end_clean(); 
// console shows Data as String but $data is still empty 
    echo "Data : " . $data; 
?> 

而且Node.js的腳本只是具有可變結果與它的對象。

console.log("skript startet"); 
var get = function(){ 
/*do stuff to get variable*/ 
     result = "test; 
     console.log(result); 
     return result; 
     }); 
    }); 
}; 
get(); 

問題:我需要在getResult.js腳本變量,但我不能」趕上它在PHP。有任何想法嗎 ?

回答

0

這是你所需要的?

<?php 
ob_start(); //note, no parameter here 
passthru('/usr/bin/env node getResult.js '); // this should be captured 
$data = ob_get_contents(); 
ob_end_clean(); 

echo "Data : " . $data; 
?> 
+0

$ data仍爲空,但腳本得到執行 – nova

+0

您的意思是執行getResult.js腳本?那個js腳本的輸出是什麼?什麼是PHP腳本的輸出? –

+0

php腳本就是你在這裏所看到的,節點腳本使得mongodb調用獲取一些數據,我將它寫入了一個var,現在我需要在我的php代碼中的這場戰爭的內容。 – nova

1

爲什麼還要輸出緩衝區呢?

exec('/usr/bin/env node getResult.js', $data); 
echo "Data: " . $data; 

exec()將命令的完整輸出寫入提供的變量。

+0

如果我使用它,我的腳本不會再啓動:/ – nova

+0

只需首先放置回聲,然後通過(無緩衝)也可以工作 –

+0

@ChrisLear不會將結果放在變量中,即實際的目標。回聲很可能只是一個測試。 –