【问题标题】:Systematically update database using cron使用 cron 系统地更新数据库
【发布时间】:2012-07-07 07:27:07
【问题描述】:

我正在开发类似于梦幻足球应用程序的软件。

我有用户帐户,其中每个帐户的信息都存储在 mysql 的关系数据库中。我有一个 php 脚本,我想在所有游戏完成后运行它以一次更新每个成员的统计信息(可能有成千上万的用户)。

经过研究,似乎最好的解决方案是使用 Unix 设置一个 cron 选项卡。
我想知道这是否是正确的解决方案?

如果我将此 crontab 设置为每周二运行,它会运行更新用户信息的 PHP 脚本吗?

使用 Unix 为一个简单的网站设置 cron 选项卡是否容易?

【问题讨论】:

  • 是的,这就是 cron 所做的:它在特定时间运行(您选择的)命令。你有什么问题?
  • 我只是想知道是否有人可以详细说明 crontab,因为我不知道它是如何工作的。我不明白你为什么给我一个 -1 以试图寻求帮助。
  • 因为听起来您在发布问题之前甚至没有阅读 cron 的联机帮助页或尝试任何方法。
  • 现在是-2??我以前从未使用过这个网站,并且受到的待遇很差。我只是在寻求帮助。
  • 我描述了我所读到的内容,我只是想知道是否有人可以提供任何东西(例如:建议、经验)。我再也不会使用这个网站了,我听说过关于它的好消息。 :(

标签: php mysql unix crontab


【解决方案1】:

设置 crons 非常简单。如果您有 shell 访问权限,只需键入 #crontab -e 即可进入 cron 设置。查看此链接:Crontab - Quick Reference.
您只需创建一个 PHP 脚本并通过 cron 选项卡链接它。如果您使用 cPanel 运行服务器,那么还有一个内置的 cron 管理器,如果您更喜欢在 GUI 中执行此操作。

您没有提供足够的信息让我对此发表任何结论性意见,但您希望平衡脚本,以便 1) 足够频繁地运行,以便它必须更新足够小的更改——例如,如果每小时更改 100 条记录,每天运行脚本意味着它必须更新 2400 条记录,而如果您每周运行一次,它必须更新 16800 条记录,这可能非常严重,以至于它会增加您的服务器负载。和/或 2) 将您的更新分成几块。例如,如果记录每周只更改一次,但当时有 16800 条记录更改,那么您可能希望让您的脚本运行 1000 次更新并使其休眠一段时间,再运行一些,休眠等(这是一个坏习惯,但我想这是最简单的),或者你经常运行你的 cron 脚本,每次更新 1000 次,最后它会留下一个痕迹(例如,最后一个 ID 号)它更新到数据库中的最后一次更改,以便脚本可以在下次运行时获取该更改。

如果您希望我起草一些更详细的示例来说明两种不同的方法,请告诉我。

【讨论】:

  • 非常感谢!我知道这有点笼统。但这正是我想要的。比刚刚投票反对我甚至没有尝试帮助我的女人 Celada 更有帮助。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2011-10-02
  • 2010-11-25
  • 2011-10-17
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2019-09-16
  • 2017-08-08
相关资源
最近更新 更多