“php script”/“mysql update”动态计划

时间:2014-06-14 15:25:13

标签: php mysql cron scheduled-tasks

Hello其他程序员! :)

我希望能够设置一些php脚本,以便在用户触发某些事件后运行。让我们说,用户创建一个论坛帖子,应该在48小时后自动关闭。它相当于对MySQL行的更新:     UPDATE线程SET关闭=' 1'在哪里threads.id =' x'。 因此,这个问题不一定只能用php来解决。

这种问题不时出现,但我发现的一切都是建立一个cron工作来运行每一个' x'时间量,检查是否有时间关闭线程。问题是,运行此检查通常会导致比在给定时间安排脚本运行一次更高的系统负载。不要忘记,可能有数百甚至数千个线程,每个线程都有自己的时间被关闭。我们可以通过创建某种队列来避免检查每个线程,例如在MySQL中,因此脚本从数据库条目中选择" time_to_close< NOW()"并关闭这些。另一个缺点是,我希望线程在48小时后完全关闭。在这种情况下,脚本应该每秒运行一次,并且只需要很少的时间就可以完全执行。

除了cron作业,我认为以下方法也很有用: 如果应该关闭,请检查每次访问线程。这也会导致更高的负载,尤其是在经常访问线程的情况下。

那么有没有有效的方法来安排(php)脚本运行,具体取决于特定事件的时间?在写这个问题时,我偶然发现了MySQL事件调度程序。与程序一起,可以提供额外的流量控制(仅在48小时后没有活动时关闭线程)我认为我的想法可以实现。我不熟悉MySQL的这些功能,所以我很感激有关这个主题的任何帮助。

最诚挚的问候, system__failure。

1 个答案:

答案 0 :(得分:0)

我知道很多网站都会根据每个用户的请求来补偿这种行为。开销并没有那么糟糕,你的记录总是正确显示(除非你有设计问题。)这也有效,因为大多数主机都没有给你cron访问权限。你很少需要在php中安排一份工作。每小时都有一些例外报告。但尝试用cron捕获用户操作并不是一个好主意。

相关问题