我有一个每小时运行一次的cronjob并解析150,000多条记录。每个记录都在MySQL表中单独汇总。我使用两个Web服务来检索用户信息。
每次我获得1条记录时,我会检查是否有信息,如果不是,我会调用这些网络服务。在跟踪我的代码之后,我发现这两个调用都需要2到4秒,这使得我的cronjob非常慢,我无法按时编译统计信息。
有没有办法让这些网络服务更快?
由于
答案 0 :(得分:22)
简单:
在本地获取数据并使用mellissa数据:
你也可以使用memcache或APC缓存它们,这样可以加快速度,因为他不需要从api或数据库请求数据。
答案 1 :(得分:4)
一些想法......如果相同的用户正在返回,那么在另一个表中缓存数据将非常有用......你只需要查找一次并将其用于返回用户。在重新阅读问题时,您似乎正在这样做。
另一种选择是在需要进行查找时生成新线程。这可能是每个请求的新线程,或者如果这不可行,您可以准备好n个服务线程来进行查找并更新结果。