2

我有一个奇怪的问题。我有一个只在我们的网络服务器上运行的 php 脚本,它会在将新的处理作业放入数据库后立即处理大量数据。处理大约需要 1-5 分钟。

我所做的是运行一个 php 脚本来检查数据库中是否有未完成的工作,并且此页面使用以下 html 标头每 5 秒刷新一次:

<meta http-equiv="refresh" content="5">

服务器只是运行这个脚本,所以它会自动被拾取。问题是:有时,当服务器繁忙时,它会抛出一个内部错误 500。这意味着页面停止加载并且将不再刷新(即使几秒钟后它会再次可用)。

我怎样才能最好地解决这个问题?我考虑过让 Ajax 用他们的轮询系统来做,问题是一个处理工作需要几分钟,如果同时有几个处理工作,它会同时开始做所有这些工作,这我们不想要。而且我什至不知道当 Ajax 再次开始刷新时加载页面是否会停止,因此没有完成脚本。

如果在数据库中创建新作业时有运行 PHP 脚本的替代方法,我也很想知道。

4

1 回答 1

3

使用cron. 不要通过网络浏览器运行它。甚至不要通过 Web 服务器运行它。

于 2013-09-02T13:24:00.727 回答