2

我不确定这是否可以使用像 GoDaddy/Razor Hosting/DiscountASP/etc. 这样的常规托管计划,或者我是否需要 VPS(或类似的)。

我想要做的是要么让一个程序不断运行并每小时执行一项活动,要么让程序每小时启动一次。该程序/服务基本上使用 HttpWebRequest 获取网页的源并将其保存到 SQL Server 数据库。显然,我希望它每 x 分钟运行一次,以保持内容最新。我可能每天使用该程序 7 次,或者我可能每 7 个月使用一次,因此每次访问页面时它都无法抓取网站。

在我自己的机器上,我会创建一个带有线程或后台服务的 ASP.Net 页面,该页面每隔一小时检查一次时间,然后执行任务。但是由于我在另一台访问权限非常有限的机器上,所以我不知道该怎么做。我在想也许 SQL Server 触发器会起作用,也许在系统时间之外,但我不确定这是否会起作用(我会执行一个程序?)。

还有很多其他方法可以在我的机器上执行此任务,但我无法执行其中任何一种方法,因为我无法访问具有常规托管的实际系统。那么我必须获得 VPS [或类似的东西] 还是有什么办法可以做到这一点?

4

5 回答 5

1

您将无法在标准托管计划上运行程序/软件。您将需要 VPS 或专用主机。专用主机是首选,因为某些 VPS 计划,取决于主机,甚至不允许它。

但是,您可以使用 PHP 或任何 Web 语言执行类似的操作,然后将其作为 Cron 作业运行,这在普通主机上是允许的。基本上,如果您可以将其编码为前端页面或小脚本(perl/python 等),那么您可以对其进行编码并使其作为 Cron 运行。因此,例如对页面进行编码,放置在目录 /crons 中,然后将 Cron 作业添加到它,但只是不喜欢站点中的其他任何地方。

于 2012-07-16T04:59:59.953 回答
1

最好和最简单的解决方案之一是缓存和缓存对象失效的功能。

System.Web.HttpRuntime.Cache.Insert(key,value, null, DateTime.UtcNow.AddHour(1), Cache.NoSliding, Pariority.Default, DelegateToCallWhenCacheIsInvalid);

Asp.Net 在 1 小时内从缓存中删除值并调用您的委托方法。您可以完成您的工作并将另一个值缓存 1 小时。注意一些案例:

  1. 在共享主机中,如果在特定时间内未收到请求,应用程序将关闭。您可以在代码中重复手动向您的主机发送请求。
  2. 如果应用程序关闭或重新启动,缓存将被回收。您必须保存上次运行日期和时间,以便在开始应用程序后计算正确的第一个周期。
  3. 可能是您的缓存被删除以减少内存。检查删除委托中的值的原因或将优先级设置为高。
于 2017-08-11T09:01:46.523 回答
0

也许您可以尝试将 Hangfire 用于Recurring tasks。使用 ASP.NET Web MVC/API 配置和使用它非常容易,尽管我还没有在 godaddy 上实际尝试过。

于 2015-02-06T06:21:15.930 回答
0

DiscountASP 在控制面板中有一个“计划任务管理器”:您告诉它每 15 分钟或更长时间调用一次您的页面(然后您可以编写活动代码以在该页面中运行)。

于 2017-01-23T22:17:15.867 回答
0

我认为您正在寻找一种完美的方式来计划和组织活动,只需一分钟的时间安排。让我告诉您可以使用在线事件注册系统轻松处理各种类型的功能。

该系统具有同时推广和管理活动的能力,借助它,您不必担心管理售票或注册的时间。它还将赋予设计定制活动页面甚至门票的特权。

我相信您会在实施该系统后看到不同之处。

于 2017-08-11T08:14:25.353 回答