Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
Mysql LAMP:如何实施调度?_Mysql_Database_Cron_Database Design - Fatal编程技术网

Mysql LAMP:如何实施调度?

Mysql LAMP:如何实施调度?,mysql,database,cron,database-design,Mysql,Database,Cron,Database Design,我的应用程序的用户需要能够安排某些任务在特定时间运行(例如,仅一次、每分钟、每小时等)。我的计划是让cron每分钟运行一个脚本,检查应用程序是否有任务要执行。如果是,则执行任务 问题: 每分钟运行cron是个好主意吗 如何像cron那样在数据库中建模(例如,每分钟、每小时的第五分钟等) 我使用的是LAMP。您的意思是您有一系列用户定义的作业需要按用户定义的时间间隔执行,并且您想让cron帮助处理这些作业吗?如果是这样,您希望数据库至少包含两个字段: 工作, 常 where-frequency是他

我的应用程序的用户需要能够安排某些任务在特定时间运行(例如,仅一次、每分钟、每小时等)。我的计划是让cron每分钟运行一个脚本,检查应用程序是否有任务要执行。如果是,则执行任务

问题:

  • 每分钟运行cron是个好主意吗
  • 如何像cron那样在数据库中建模(例如,每分钟、每小时的第五分钟等)

  • 我使用的是LAMP。

    您的意思是您有一系列用户定义的作业需要按用户定义的时间间隔执行,并且您想让cron帮助处理这些作业吗?如果是这样,您希望数据库至少包含两个字段: 工作, 常

    where-frequency是他们希望作业运行的频率,使用类似于CRON的语法

    然后需要编写一个脚本(用python、ruby或类似的语言)来解析数据。这个脚本将通过实际的cron每1分钟运行一次


    看一看,关于如何通过python解析crontab数据。

    或者,不做任何实际工作,只需为用户创建一个界面,然后在cron中发布条目!与其让cron每分钟都给您打电话,不如让它按照用户的指示调用脚本。当他们添加或更改作业时,重写crontab

    没什么大不了的


    在unix中,cron允许每个用户(即unix登录名)拥有自己的crontab,因此您可以拥有一个专用于应用程序的crontab,而不必为此使用根crontab。

    我不知道您是否使用Java,但您可以查看Quartz Scheduler。这也可能有助于回顾(向下滚动到示例):您可以将此作为一个起点:另外,就存储cron计划而言,您可以只存储一个cron表达式。它们很容易理解。您必须修改Web表单以允许用户创建表达式,但我不认为这会有那么困难(取决于您希望它有多复杂)。我想这是可能的。这意味着每个帐户用户都需要有一个关联的unix用户。这可能有点复杂???不,我的观点是,你有一个用户与你的应用程序关联,并使用crontab——没有理由每个应用程序用户都有一个unix用户。我认为这个想法可能是可行的。我会再考虑一下。你做过类似的事情吗?没有,我用的是Java,并编写了自己的调度程序。这是一个小小的工作,而且cron真的不适合它。但对你来说,这很简单。假设您可以将用户希望在其中运行的作业转换为shell脚本,您可以将中的作业设置(类型、输入数据、计划等)捕获到数据库中的内部作业表中,然后使用该表创建脚本(可能以主键命名),然后简单地转储crontab,然后使用“crontab-u”重新加载它。我刚刚意识到这可能很难实现。我需要提供允许用户修改这些任务的能力(例如更改频率等)。此外,需要为每个任务指定开始和停止日期;cron不支持这个,对吗?我想我需要一个数据库解决方案,而不是试图操纵cron文件。你怎么认为?