【发布时间】:2013-04-19 03:07:28
【问题描述】:
我只是在 JC 课程中学习 PHP 和 Javascript。我有以下学校项目。以下setInterval() 每 3 秒运行一次,但嵌入的 PHP 代码只运行第一次。
即newVal 第一次得到更新,但在接下来的迭代中不会改变它的值。该脚本从不通过 telnet 回到服务器以查找值是否更改。
setInterval(function () {
var newVal, mem;
<?php $telnet = new PHPTelnet();?>;
<?php $result = $telnet->Connect('ip_address','username','password');?>;
<?php $telnet->DoCommand('show process memory summary"', $result);?>;
<?php $result = preg_replace('/[\r\n ]+/',' ', trim($result)); ?>;
newVal = "<?php echo substr($result,61,7) ?>";
newVal = newVal / 10000;
mem.update(newVal);
}, 3000);
感谢下面的一些答案/cmets,这就是我为使其工作所做的工作:
Javascript
setInterval(function () {
$.get("memAccess.php", function(return_value) {
mem.update(parseFloat(return_value));
});
}, 3000);
单独的 PHP 文件
<?php
$telnet = new PHPTelnet();
$result = $telnet->Connect('ip_address','username','password');
$telnet->DoCommand('show process memory summary', $result);
$result = preg_replace('/[\r\n ]+/',' ', trim($result));
$result = substr($result,61,7);
echo $result;
$telnet->Disconnect();
exit();
?>
【问题讨论】:
-
了解PHP的页面生命周期。
-
你不能这样做;分离进程并使用AJAX从客户端调用它。
-
这里提示 PHP 在服务器端运行,JavaScript 在客户端运行
-
我会尝试这样做: 1- 将所有 php 代码放入新文件中。 2- 在 setInterval 函数中使用 Ajax POST,将数据传递到 php 文件并恢复您想要发布的信息
标签: php javascript setinterval