我有一个网站上,人们可以要求某些文件进行处理,处理是在我的服务器上完成,然后处理的文件可供下载。我想让我网站的管理员从网站上看到处理代码是否正在运行,是否失败,是否正在等待等。
所以我想我只想在网页上有一行“等待”,“活动”,“失败”等等,我想它会使用php。
这就是大体轮廓,特别是我的系统是如何工作的:
·当用户选择一个处理任务时,它会使用php添加到mysql数据库中。
·一个名为monitor_database.py的python代码运行在screen实例中,它监视数据库,并在注意到数据库中有新请求时启动相应的处理作业。
·处理完成后,更新数据库。
因此,我希望能够从我的网页上看到screen会话和我的monitor_database.py是否正在运行,以及monitor_database.py是否已经发送了要处理的内容,或者正在等待。
有没有人有关于如何最好地实现这一点的建议?
发布于 2013-01-22 23:36:53
如果你不适应IE,你可以使用WebSockets。
这个答案和你的问题一样一般;-)
发布于 2013-01-24 19:26:31
最常见的方法是使用Ajax调用。例如,看看有多少旅游网站在搜索航班时会显示状态屏幕。
具体的实现方式高度依赖于应用程序,但原则上您有一个“状态”页面(可以是用户上传文件的页面)。状态页面包含JavaScript,它每隔30秒调用服务器上的一个PHP脚本;PHP脚本反过来查询数据库以查找当前文件的状态,并返回一些XML或JSON。web页面上JavaScript解释XML或JSON,并用结果更新页面。这里有更多关于here的描述。这里有示例代码here。
发布于 2013-05-16 00:28:05
这是我最终想要的解决方案。
首先,我在数据库上创建了一个新的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中,我可以有一个东西显示‘process1上失败’或‘在进程2上操作’,这取决于我的进程是如何进行的。我必须刷新我的页面才能使其更改。我相信前面的答案假设我希望避免刷新页面,并提出了避免这种情况的方法,但实际上我只是想要一种简单的方法来检查进程是否正在运行。exec ( gps... )
是关键。
https://stackoverflow.com/questions/14462147
复制相似问题