如何设置网站定期任务?

时间:2010-01-24 11:46:24

标签: web-services web-applications

我不确定这个主题是否适合这个问题...无论如何,假设我有一个网站,使用PHP或JSP以及功能有限的廉价主机。更确切地说,我没有自己的服务器,我不能按照自己的意愿运行守护进程或服务。现在我想定期运行(比如每分钟或两分钟)执行某些统计。它们可能很耗时,所以我不能为每个访问页面的用户重复计算。我可以在用户加载页面时进行一次计算并计算已经过了足够的时间,但在这种情况下,如果计算得到很长时间,响应时间可能会过长并超时(我不太可能不打算运行这么长的任务,但我考虑的是最糟糕的情况)。

所以考虑到这些成本,您会建议哪些解决方案?

3 个答案:

答案 0 :(得分:2)

每个廉价主机都会得到crontabs的支持。首先查看托管包。 如果没有,请加载页面,然后通过AJAX启动任务。通过这种方式,您的响应时间不会受到影响,并且您可以在不同的线程中完成工作。

答案 1 :(得分:1)

如果您选择使用crontab,则需要了解更多信息才能从中执行PHP脚本。取决于您的PHP是作为CGI执行还是apache模块有效。有一篇关于如何做到这一点的好文章:

http://www.htmlcenter.com/blog/running-php-scripts-with-cron/

如果您无法访问托管服务提供商的crontab(找到新的),还有其他选项。例如:

http://www.setcronjob.com/

我会在每个X期间远程调用您网站上的脚本..我认为您必须每月更新一次。如果您使用他们的付费服务(根据头版每年5美元),我您最后设置的工作,直到您取消它们或您的付费学期用完为止。

答案 2 :(得分:1)

在Java中,您可以创建一个Timer。它可以创建一个后台线程,每隔一段时间执行一次给定的函数。

我的偏好是在ContextListener.contextInitialized()方法中启动Timer对象,但是你可能有一个更合适的位置。