0

好的,我有一个 Web 服务器和一个使用 php 的站点。我的问题是如何触发 php 文件定期运行(例如每 5 分钟一次)?

不幸的是,我的网络托管服务提供商似乎不支持 cronjobs,但对于没有 cron 访问权限的人来说,肯定有一些替代方案吗?

4

3 回答 3

2

鉴于您的要求,不,如果没有 cronjob,您将无法做到这一点。如今,如果您无法使用 cron 工具,则只需切换主机即可。

另一种选择是,您的用户实际上会在他们访问您的网站时触发您的操作,这意味着,如果您确定您的网站每分钟都会受到点击,那么您将使用数据库跟踪您的“cron 作业”,所以当用户访问该网站,您检查 cron 是否在最近 5 分钟内运行,如果运行,则什么也不做,否则,您运行 cron 并保存它运行到数据库时的时间戳。每次用户访问您的网站时都会发生这种情况。

但是,这是可怜的人 cron,如果您的操作需要花费大量时间,则不应使用它,因为您的用户将不得不等待操作完成,因此如果需要时间,您的用户将离开网站。

编辑:如果它是您所说的专用服务器,您应该可以访问 shell,然后您可以从那里设置 cron。

于 2013-04-18T11:05:39.813 回答
1

根据您可能希望执行这 5 分钟的松散程度,以及您的网站是否有定期流量(每分钟至少 1 个请求),您可以考虑:

  • 在每个请求上检查上次作业运行时的数据库
  • 如果超过 5 分钟,运行作业并更新数据库

这个脚本运行得越多,你的 5 分钟就越准确。要增加此脚本的运行次数:

  • 查看每个请求中是否包含某些文件,例如 config.php。
  • 或者你有一些路由,例如所有请求都通过 index.php
于 2013-04-18T11:04:10.017 回答
1

您可以使用 PHP 中的守护程序脚本来完成。

您可以创建一个守护程序并运行它。在那个存储中,每次都会看到时间差异。如果时间差异达到 5 分钟,那么您可以调用其他脚本并重置时间变量 - 反之亦然。

于 2013-04-18T11:05:09.890 回答