2010-01-24 57 views
0

我不确定该主题是否适用于该问题......无论如何,假设我有一个网站,使用PHP或JSP完成,并且使用功能有限的便宜主机。更确切地说,我不拥有服务器,并且我无法按照自己的意愿运行守护进程或服务。现在我想定期运行(比如每分钟或两次)执行某些统计。它们可能很耗时,所以我无法对每个访问页面的用户重复计算。当用户加载页面时,我可以做一次计算,并且计算出足够的时间已经过去了,但是在这种情况下,如果计算时间过长,响应时间可能会过长并且超时(这不可能是我不想运行这么长的任务,但我正在考虑最坏的情况)。如何设置网站定期任务?

因此,考虑到这些成本问题,您会建议哪些解决方案?

+0

你使用什么技术? – 2010-01-24 12:09:38

+0

打开的问题... Java和PHP都被认为是尽管你可以建议你的 – gotch4 2010-01-24 12:44:29

回答

1

如果你选择使用crontab,你将不得不多知道一些从他们执行你的PHP脚本。取决于你的PHP是作为CGI执行还是apache模块有效。有一个关于如何做到这一点的一个很好的文章:

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

如果您没有访问的crontab您的托管服务提供商(找到一个新的)还有其他的选择。例如:

http://www.setcronjob.com/

将调用一个脚本在您的网站,远程每X期..你有一个月我认为,一旦延长。如果你拿他们的付费服务(根据头版$ 5 /年),我想认为你设置的工作,直到你取消他们或你的付费期限用完。

2

每个便宜的主机将支持crontabs。首先检查托管软件包。 如果没有,请加载页面,并通过AJAX启动任务。这样,您的响应时间不会受到影响,并且您可以在不同的线程中完成工作。

+0

嗯。不确定,因为页面加载时需要完成所有统计信息。无论如何,crontabs似乎很有趣。它会运行PHP脚本? – gotch4 2010-01-24 11:52:20

+0

是的,'crontabs'运行服务器可以运行的任何东西(脚本)在你的目录中 – Pentium10 2010-01-24 11:53:16

1

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

我的首选是在ContextListener.contextInitialized()方法中启动Timer对象,但是您可能有更合适的位置。