Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从网站监视后台进程_Php_Mysql_Process Monitoring - Fatal编程技术网

Php 从网站监视后台进程

Php 从网站监视后台进程,php,mysql,process-monitoring,Php,Mysql,Process Monitoring,我有一个网站,人们可以在上面请求处理某些文件,处理在我的服务器上完成,然后可以下载处理过的文件。我想让我的网站管理员能够从网站上查看处理代码是否正在运行、是否已失败、是否正在等待等 所以我想我只想在网页上有一行写着“等待”,“活动”,“失败”,等等。我希望它会使用php 这是总体概述,特别是我的系统是如何工作的: •当用户选择处理作业时,会使用php将其添加到mysql数据库中 •一个名为monitor_database.py的python代码正在屏幕实例中运行,它监视数据库,并在发现数据库中有

我有一个网站,人们可以在上面请求处理某些文件,处理在我的服务器上完成,然后可以下载处理过的文件。我想让我的网站管理员能够从网站上查看处理代码是否正在运行、是否已失败、是否正在等待等

所以我想我只想在网页上有一行写着“等待”,“活动”,“失败”,等等。我希望它会使用php

这是总体概述,特别是我的系统是如何工作的:

•当用户选择处理作业时,会使用php将其添加到mysql数据库中

•一个名为monitor_database.py的python代码正在屏幕实例中运行,它监视数据库,并在发现数据库中有新请求时启动相应的处理作业

•处理完成后,更新数据库

因此,我希望能够从我的网页上查看screen会话和monitor_database.py是否正在运行,monitor_database.py是否已发送任何要处理的内容,或者是否正在等待


有人对如何最好地实现这一点有什么建议吗?

如果您不采用IE,您可以使用WebSocket来实现这一点


这个答案和你的问题一样笼统;-)

最常用的方法是使用Ajax调用。例如,查看有多少旅游网站在搜索航班时向您显示状态屏幕


具体操作方式高度依赖于应用程序,但原则上您有一个“状态”页面(可以是用户上传文件的页面)。状态页面包含JavaScript,每30秒在服务器上调用一个PHP脚本;PHP脚本依次查询数据库以查找当前文件的状态,并返回一点XML或JSON。web页面上的JavaScript解释该XML或JSON,并使用结果更新页面。还有更多的描述。这里有一个示例代码

这就是我最终寻求的解决方案

首先,我在数据库上创建了一个新的mysql表,该表只包含一行,描述代码的状态(等待、做这个、做那个,等等)

现在我的页面上有以下php代码:

exec( "ps aux | grep process_name.py | grep -v grep | grep -v emacs", $pids );
// This looks for any processes named 'process_name.py', ignoring those caused by emacs,
// and the one caused by grep itself.
$r_process = @mysqli_query($database, "SELECT status FROM process_status WHERE status_id=1");
// This checks the status of the file in the database.
$Monitor = mysqli_fetch_array($r_process);
$StatusName = $Monitor['status'];
if ( empty($pids) )
    {
    $Status = 'Failed';
    }
else
    {
    $Status = 'Operating';
    }

现在,在我的html中,我可以有一个东西显示“在进程1上失败”或“在进程2上操作”,这取决于我的进程是如何进行的。我必须刷新我的页面以使其更改。我相信之前的回答假设我想避免刷新页面,并建议了避免刷新的方法,但实际上我只是想用一种简单的方法来检查流程是否正在运行。
exec(gps…
是关键

你考虑/尝试了什么?@NevilleK没什么,我不知道从哪里开始。谢谢,我会调查WebSocket。是的,这看起来是我需要的。谢谢,我会调查的。