2016-03-04 145 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不会将结果放在变量中,即实际的目标。回声很可能只是一个测试。 –