Php 从网站监视后台进程
我有一个网站,人们可以在上面请求处理某些文件,处理在我的服务器上完成,然后可以下载处理过的文件。我想让我的网站管理员能够从网站上查看处理代码是否正在运行、是否已失败、是否正在等待等 所以我想我只想在网页上有一行写着“等待”,“活动”,“失败”,等等。我希望它会使用php 这是总体概述,特别是我的系统是如何工作的: •当用户选择处理作业时,会使用php将其添加到mysql数据库中 •一个名为monitor_database.py的python代码正在屏幕实例中运行,它监视数据库,并在发现数据库中有新请求时启动相应的处理作业 •处理完成后,更新数据库 因此,我希望能够从我的网页上查看screen会话和monitor_database.py是否正在运行,monitor_database.py是否已发送任何要处理的内容,或者是否正在等待Php 从网站监视后台进程,php,mysql,process-monitoring,Php,Mysql,Process Monitoring,我有一个网站,人们可以在上面请求处理某些文件,处理在我的服务器上完成,然后可以下载处理过的文件。我想让我的网站管理员能够从网站上查看处理代码是否正在运行、是否已失败、是否正在等待等 所以我想我只想在网页上有一行写着“等待”,“活动”,“失败”,等等。我希望它会使用php 这是总体概述,特别是我的系统是如何工作的: •当用户选择处理作业时,会使用php将其添加到mysql数据库中 •一个名为monitor_database.py的python代码正在屏幕实例中运行,它监视数据库,并在发现数据库中有
有人对如何最好地实现这一点有什么建议吗?如果您不采用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。是的,这看起来是我需要的。谢谢,我会调查的。