如何在PHP+;中向用户显示有关维护和夜间作业的消息;MS SQL应用程序
我们有每晚更新数据库(SQL server)和表的工作,还有一个显示数据(并执行CRUD)的PHP应用程序。这些作业需要几个小时才能运行,当这些作业运行时,我们希望通知用户“作业/数据更新正在进行,请稍后再来”。 我们也有一个表,它有第一个作业的开始时间和最后一个作业的结束时间 问题 检查表中的作业开始,然后显示“维护”消息的最佳方式是什么(以及如何)如何在PHP+;中向用户显示有关维护和夜间作业的消息;MS SQL应用程序,php,sql,sql-server,smarty,sweetalert,Php,Sql,Sql Server,Smarty,Sweetalert,我们有每晚更新数据库(SQL server)和表的工作,还有一个显示数据(并执行CRUD)的PHP应用程序。这些作业需要几个小时才能运行,当这些作业运行时,我们希望通知用户“作业/数据更新正在进行,请稍后再来”。 我们也有一个表,它有第一个作业的开始时间和最后一个作业的结束时间 问题 检查表中的作业开始,然后显示“维护”消息的最佳方式是什么(以及如何) 在数据库中添加一个表,在每个作业的开头添加该表中的一行(可能是作业中插入此行的第一步) 在作业结束时,删除该作业的该行(作业中删除该行的最后一步
CREATE TABLE ProcessMonitor
(
JobName NVARCHAR(1000)
, StatusID INT
)
GO
注
您可以在作业中添加其他步骤以更改作业的statusID,并且仅在用户绝对需要时阻止用户,否则允许他们进入,并发出少量警告等。此外,还可以检查服务器中当前正在运行的作业
SELECT
ja.job_id,
j.name AS job_name,
ja.start_execution_date,
ISNULL(last_executed_step_id,0)+1 AS current_executed_step_id,
Js.step_name
FROM msdb.dbo.sysjobactivity ja
LEFT JOIN msdb.dbo.sysjobhistory jh
ON ja.job_history_id = jh.instance_id
JOIN msdb.dbo.sysjobs j
ON ja.job_id = j.job_id
JOIN msdb.dbo.sysjobsteps js
ON ja.job_id = js.job_id
AND ISNULL(ja.last_executed_step_id,0)+1 = js.step_id
WHERE ja.session_id = (SELECT TOP 1 session_id FROM msdb.dbo.syssessions ORDER BY agent_start_date DESC)
AND start_execution_date is not null
AND stop_execution_date is null;
礼貌:每天的开始和结束时间相同?这实际上主要是一个基于意见的问题,因此可能会关闭。您可以使用配置,也可以使用cron更新web服务器或代理配置。很难说什么是最好的方法,因为这取决于你的应用需求。他没有要求最好的方法,这是基于意见的。他提出了一种方法:在表中添加一个字段,显示作业的“状态”。更新包开头和结尾的“状态”字段。向用户报告“状态”。正如评论所说,您有很多方法来实现这一点。除了已经提到的cron/update状态之外,您可以在访问数据的页面中添加一个时间检查:如果时间在您设置的时间间隔内->显示消息(即:抱歉,关闭到凌晨xxAM)