我想为我的Android手机创建一个天气应用程序,但现在我被困在应用程序的后端部分。
我找到了一个天气服务器,我可以免费通过他们的网络服务获取有关某个位置的详细信息。但是他们在规则中已经说过,我不允许高频率地调查他们的服务。所以我认为我可以自己创建一个Web服务,从我找到的天气中检索天气信息,然后通过我的网络服务将其提供给我,以便我的应用只调用我的服务。
沟通将如下所示
MyApp< - > MyWebService< - >商业网络服务
android app与MyWebService对话。我的网络服务与商业服务部门进行了对话。
所以我希望MyWebService能做些什么。
我的问题是我对Web应用程序和Web服务知之甚少。我真的不知道为webservice选择什么语言。 使用soap或REST的PHP看起来像是第二项任务的一个很好的候选者。但我找不到任何关于如何处理第一项任务的样本。有没有简单的方法告诉服务器每小时运行一次脚本? 我一直在寻找C#,这对我来说更适合我,因为我更习惯于C#。但是这里出现了同样的问题。我该如何处理第二项任务?
这是我想写很长一段时间的东西,但我觉得这里完全失去了。
答案 0 :(得分:1)
出于多种原因,从仅限Web的应用程序“每小时一次”(或更一般地,调度任务)做事很棘手。通常使用操作系统的内置机制来执行计划任务(例如Linux下的 cron ,或Windows下的计划任务)或者更好编写一个处理更新的服务/守护进程。
话虽如此,有一种相当直接的方式来满足您的要求。您可以缓存 Web应用程序层中商业Web服务的结果,以及上次检索信息的时间戳。当Web请求从您的应用程序进入您的Web服务时,请首先检查缓存的时间戳。如果时间戳小于一个小时,则只返回缓存的天气数据。如果时间戳超过一小时,请直接从那里调用商业Web服务,将结果和当前时间写入缓存,并将刚刚获得的数据返回给应用程序。
PHP当然非常适合这种任务。有关如何执行此操作的详细说明超出了Stack Overflow问题的范围。谷歌用于PHP和缓存,尝试一些例子,如果你遇到困难,可以询问详细的后续问题。