【问题标题】:how to run a nodejs Script in php page如何在 php 页面中运行 nodejs 脚本
【发布时间】:2021-09-10 12:25:21
【问题描述】:

我正在尝试使用 nodejs 、 php 、 html 和 css 构建一个 html scada 系统。

我的程序:我在 nodejs 中有这个 9 行的小代码;我使用此代码在 modbus rtu 协议中与 PLC 通信。如果我从终端运行,代码运行良好;

我的问题:我试图在 html 页面中使用 php 提交按钮 运行此代码,但我认为我遗漏了一些东西,因为它不起作用。

谢谢。 nodejs 代码

// create an empty modbus client
var ModbusRTU = require("modbus-serial");
var client = new ModbusRTU();
// open connection to a serial port
   client.connectRTUBuffered("COM2", { baudRate: 9600 ,parity: "even", dataBits: 8, stopBits: 1} , write );
     function write() {
    client.writeCoil(22, 1);
      
 }

html代码:

 <html>
<head>
<title>PHP isset() example</title>
</head>
<body>
<form method="post">
<input type="submit" value="Sum" name="Submit1"><br/><br/>
<?php
if(isset($_POST["Submit1"]))
{
  exec('write.js  >/dev/null/ 2>&1 &');  
}
?>
</form>
<script src="write.js"  type="text/javascript" ></script>
</body>
</html>

【问题讨论】:

标签: php html node.js scada


【解决方案1】:

您想要执行一个没有解释器就无法执行的 js 文件。您的exec 代码应如下所示:

exec('node write.js')

这里node 是你的节点实例的可执行文件。

【讨论】:

  • 非常感谢,它可以工作,但只能工作一次。我的意思是我不能执行代码两次或三次...
  • @OussamaSalim 您的 HTML 表单和 PHP 代码看起来不错。我的猜测是你的 nodejs 代码必须对它做一些事情。可以从命令行多次执行吗?
  • 当我从终端执行我的代码时,它现在工作正常,当我执行 php 代码时它只运行一次 jsfile,之后我必须重新启动笔记本电脑才能在其他时间运行代码一次。
  • 有没有我可以使用 php 从 js 文件调用函数?
  • @OussamaSalim 不 - 这是不可能的。您可以为此使用 exec 和 node,但它会带来巨大的性能开销。
猜你喜欢
  • 1970-01-01
  • 2019-04-08
  • 2014-09-02
  • 2019-06-12
  • 2012-03-29
  • 2017-12-15
  • 2014-02-26
  • 2020-07-25
  • 2016-12-30
相关资源
最近更新 更多