Cronjob:Web服务查询

时间:2011-10-30 14:15:44

标签: web-services optimization cron

我有一个每小时运行一次的cronjob并解析150,000多条记录。每个记录都在MySQL表中单独汇总。我使用两个Web服务来检索用户信息。

  1. 用户人口统计(ip,国家,城市等)
  2. 电话信息(如果固定电话或手机,如果手机是什么载体)
  3. 每次我获得1条记录时,我会检查是否有信息,如果不是,我会调用这些网络服务。在跟踪我的代码之后,我发现这两个调用都需要2到4秒,这使得我的cronjob非常慢,我无法按时编译统计信息。

    有没有办法让这些网络服务更快?

    由于

2 个答案:

答案 0 :(得分:22)

简单:

在本地获取数据并使用mellissa数据:

  1. for ip:http://w10.melissadata.com/dqt/websmart/ip-locator.htm
  2. 致电话:http://www.melissadata.com/fonedata.html
  3. 你也可以使用memcache或APC缓存它们,这样可以加快速度,因为他不需要从api或数据库请求数据。

答案 1 :(得分:4)

一些想法......如果相同的用户正在返回,那么在另一个表中缓存数据将非常有用......你只需要查找一次并将其用于返回用户。在重新阅读问题时,您似乎正在这样做。

另一种选择是在需要进行查找时生成新线程。这可能是每个请求的新线程,或者如果这不可行,您可以准备好n个服务线程来进行查找并更新结果。