来自php的exec nodejs脚本
我对在循环中使用exec的php中使用的nodejs脚本有问题。 问题是,脚本只执行一次,然后只执行一次错误。 以下是php代码:来自php的exec nodejs脚本,php,node.js,Php,Node.js,我对在循环中使用exec的php中使用的nodejs脚本有问题。 问题是,脚本只执行一次,然后只执行一次错误。 以下是php代码: for ($i=0; $i <= ((mysqli_num_rows($repp)/50)-1); $i++) { $req = "select * from items limit ".$id.",50"; $rep = mysqli_query($link,$req); $names = ""; $id = $id + 50;
for ($i=0; $i <= ((mysqli_num_rows($repp)/50)-1); $i++)
{
$req = "select * from items limit ".$id.",50";
$rep = mysqli_query($link,$req);
$names = "";
$id = $id + 50;
while($donne = mysqli_fetch_array($rep))
{
$names = $names.$donne["item_name"].',';
}
$resultat = '"'.rtrim($names, ",").'"';
exec("node node_opskins.js ".$resultat,$out);
$result =implode($out);
$a = str_replace("'", '"', $result);
$a = preg_replace('/([\w\d]+): /', '"$1": ', $a);
foreach ( json_decode($a,true) as $key => $value)
{
echo $key . " : " . $value['market_price'] . "<br/>";
$req = "update items set opskins_suggested = '".($value['market_price']/100)."' where item_name = '".addslashes($key)."'";
mysqli_query($link,$req);
}
sleep(10);
}
首先,这是一个非常低效的方式来实现你的目标。如果您的节点应用程序正在侦听某个端口,并提供对来自PHP应用程序的HTTP或某个本地IPC请求的响应,则效率会更高。如上所述,如果您仍然希望像现在这样运行节点应用程序,则应处理节点中的错误:
var OPSkinsAPI = require('@opskins/api');
var opskins = new OPSkinsAPI(my opskins api key);
var item = process.argv[2].split(",");
opskins.getSuggestedPrices(730, item, function(err,price){
// handle errors:
if (err) {
console.error('Error:', err);
process.exit(1);
}
console.log(price);
});
这样你就能知道发生了什么。否则,您的程序将只返回stdout上未定义的字符串,并且您的PHP程序不会知道出现了问题
您还需要处理PHP中的错误。请提供您的错误消息。
var OPSkinsAPI = require('@opskins/api');
var opskins = new OPSkinsAPI(my opskins api key);
var item = process.argv[2].split(",");
opskins.getSuggestedPrices(730, item, function(err,price){
// handle errors:
if (err) {
console.error('Error:', err);
process.exit(1);
}
console.log(price);
});