使用 cron 系统地更新数据库


Systematically update database using cron

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

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

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

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

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

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

您没有提供足够的信息让我对此说任何结论,但您希望平衡脚本,以便它 1) 运行足够频繁,以便它必须更新足够小的更改 - 例如,如果每小时更改 100 条记录,每天运行脚本将意味着它必须更新 2400 条记录, 而如果你每周运行一次,它必须更新 16800 个重新编码,这可能非常严重,以至于会增加你的服务器负载。和/或 2) 将您的更新分解成块。例如,如果记录每周只更改一次,但当时有 16800 条记录更改,那么您可能希望让您的脚本运行 1000 次更新并将其置于睡眠状态一段时间,再运行一些,睡眠等(这是一个坏习惯,但我认为这是最简单的),或者您经常运行 cron 脚本, 每次它执行 1000 次更新时,在更新结束时,它将在数据库中留下上次更新的更改的跟踪(例如,最后一个 ID 号),以便脚本可以在下次运行时继续跟踪。

如果你想让我起草一些更详细的例子来说明这两种不同的方法,请告诉我。