在HTML / PHP中实现“kill”按钮

时间:2012-05-12 00:39:25

标签: php javascript html

我目前正在开发一个PHP UI,它收集信息,解析它,将其发送到另一个程序,收集输出并将其呈现给用户。

通常它工作正常。然而,有时候,另一个程序可能需要永远完成(在2到15个小时之间,我让它一夜之间运行,它在早上完成)。我想实现一个允许用户取消程序的KILL按钮,因为它不仅要花费很长时间才能完成,而且还会占用服务器并阻止用户在此期间做任何其他事情。

目前的设置方式如下:  page1.php收集所有用户输入。  page2.php检查用户输入。    如果不好,则会输出错误。    如果输入正常,它会解析它并通过系统调用将其发送到其他程序。当这种情况发生时,屏幕上会出现“计算...”gif。程序完成后,输出将显示在页面上。

最好我希望kill按钮与计算gif同时出现(并且只在同一时间出现),我希望它能够杀死进程(并且输出反映了这样一个事实:这个过程被杀了。)

到目前为止,我已经能够按钮出现在我想要的时间和地点。但是,我无法获得我正在寻找的实际杀戮功能。目前我已将其设置为使用带有javascript函数的html按钮创建按钮,该函数在单击时执行。该javascript函数包含一个系统调用的php代码,它找到目标进程并杀死它们(我知道系统调用正常,因为我可以在我的终端窗口使用它并且它工作正常)。

以下是相关代码:

startload("calculating");
$opt->run_optimization($output);
stopload("calculating");

这会显示计算gif和kill按钮,然后运行一个使系统调用的函数,然后删除计算gif和kill按钮。

system("./optimi/optimi < $infile > $outfile");

这是对其他程序(optimi)的系统调用。

    print <<< KILLBUTTON

<br/>
<button type="button" onclick="kill();">Kill</button>
<br/>

<script type="text/javascript">
function kill(){
    <?php
    system("ps -Af | grep optimi | grep -v grep | awk '{print $2}' | xargs sudo kill"); 
    ?>
}
</script>

KILLBUTTON;

这是我的杀戮按钮,现在似乎没有做任何事情。

我应该指出,重写optimi程序是我想不惜一切代价避免的,考虑到我不是编写它的人,也不是我对编写它的编程语言的经验。

感谢。

1 个答案:

答案 0 :(得分:7)

您似乎不了解网络服务器如何与您的浏览器互动。

当您向运行php的Web服务器发送请求时,Web服务器会加载所请求的文件,解释任何相关的php代码,然后向浏览器发送文本文件

如果该文本文件中有javascript,您的浏览器将尝试解释/执行它。你不能把php代码放在一个javascript函数中,并期望它在用户执行某些操作时执行 - 页面上的所有php只执行一次 - 当请求页面时。

如果你想运行php代码以响应用户交互,你需要为有问题的php脚本设置一个ajax请求。