繁体   English   中英

cron作业或PHP调度程序

[英]cron jobs or PHP scheduler

我使用MYSQL作为我的数据库,PHP作为我的编程语言。我想运行一个cron作业,该作业将一直运行,直到当前系统日期与我的数据库表中名为“PROJECT”的“deadline(date)”列匹配。一旦日期必须运行更新查询,这将更改状态(项目表的字段)从“打开”到“关闭”。

我不确定cron作业是最好的方式,还是我可以使用触发器,或者可能是其他东西。我也使用Apache作为我的Web服务器,我的操作系统是windows vista。

这也是最好的方法吗? PHP调度程序或cron作业或任何其他方法? 任何人都可以开导我吗?

我认为你的概念需要改变。

PHP无法安排工作,MySQL也无法安排工作。 MySQL中的触发器在发生mysql查询时执行,而不是在特定时间执行。 也不

这种限制通常不是Web开发中的问题。 原因是因为您的PHP应用程序应该控制进出的所有数据。 通常,这仅表示向用户或其他程序显示该数据或其他格式的HTML。

在你的情况下,你可以这样思考。 截止日期是设定日期。 您可以将其视为数据,并将其保存到数据库中。 如果发生截止日期并不重要,那么您在数据库中发送的数据将被正确查看。

当您的应用程序发出请求时,检查截止日期是否已过去,如果是,则显示项目已关闭 - 或者在显示之前更新项目已关闭。

没有理由独立更新PHP应用程序的数据。

通常,您要安排的唯一事项是在加载方面会影响应用程序的作业,或者只需要执行一次,或者并发或时间成问题的作业。

在你的情况下,这些都不适用。

PS:我没有尝试过PHPscheduler,但我猜它不是真正的调度程序。 Cron是一个守护进程,直到给定任务在其队列中到期,执行任务,然后休眠直到下一个到期(至少那是它在当前算法中的作用)。 如果没有套接字和fork扩展,PHP不能像特殊设置那样做。 所以PHPscheduler很可能只是检查一个任务的日期是否已经过期,每次加载一个网页(每当PHP执行一个页面时)。 这与您只检查项目上的日期是否已过期没有任何不同,没有PHPScheduler的开销。

对于任何相关的调度,我总是会去cron工作。

最重要的一点是你可以回复信息,然后通过电子邮件发送给你。

你会发现一旦你开始使用cronjobs,就很难停下来。

cron本身并不存在于Vista中,但存在的是标准的Windows调度管理器,您可以使用命令行运行,如“php -q -f myfile.php”,它将在给定时间执行php文件。

你也可以使用cron程序的端口,那里有很多。

如果它对第二个不重要,那么任何Windows调度应用程序都会这样做,为了简单起见,请务必在PATH变量中使用PHP bin路径。

对于Windows CRON作业,我不能推荐PyCron

怎么样PHPscheduler..R他们不比cronjobs好? 我认为crons将独立于应用程序,因此如果必须更改主机将会很困难。我不是很确定。如果有人可以对此发表评论,那将是很棒的! 谢谢!

虽然CRON和Windows计划任务是调度作业/任务定期运行的经过验证的真实方法,但是在CRON / Windows中具有不同计划任务的用例可能变得乏味。 即,当您希望让用户安排要运行的内容时,或者您希望用户更喜欢简单/可维护性/可移植性/等或上述所有内容时。

如果我不想将CRON / Windows用于计划任务,我会在应用程序中构建一个任务调度系统。 这仍然需要安排1个CRON作业或Windows任务。 我们的想法是在数据库中存储作业详细信息(作业名称,作业属性,上次运行时间,运行间隔,以及对您的实施很重要的任何其他内容)。 然后,您可以在CRON或Windows中安排“主”作业,该作业可以为您处理所有其他作业。 你需要这个主要工作至少在最短的时间间隔内运行; 如果您希望能够安排每分钟运行的作业,则主作业需要每分钟运行一次。

然后,您可以轻松地在PHP后台启动每个预定作业(如果需要)。 在内存受限的系统中,您可以监视内存使用情况或跟踪PID(各种方法)并限制在给定时间运行的N个作业。

我使用这种方法取得了很大的成功,YMMV可以根据您的需求和实施情况而定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM