Cronjob: запрос веб-службы - PullRequest
       4

Cronjob: запрос веб-службы

16 голосов
/ 30 октября 2011

У меня есть cronjob, который запускается каждый час и анализирует 150 000+ записей. Каждая запись суммируется индивидуально в таблицах MySQL. Я использую два веб-сервиса для получения информации о пользователе.

  1. Демографические данные пользователя (ip, страна, город и т. Д.)
  2. Информация о телефоне (если стационарный или мобильный телефон, и если сотовый телефон, кто является перевозчиком)

Каждый раз, когда я получаю 1 запись, я проверяю, есть ли у меня информация, и если нет, я звоню в эти веб-службы. После отслеживания моего кода я обнаружил, что оба этих вызова занимают от 2 до 4 секунд, и это делает мой cronjob очень медленным и я не могу собрать статистику вовремя.

Есть ли способ сделать эти веб-сервисы быстрее?

Спасибо

Ответы [ 2 ]

22 голосов
/ 30 октября 2011

простой:

получить данные локально и использовать данные mellissa:

  1. для ip: http://w10.melissadata.com/dqt/websmart/ip-locator.htm
  2. для телефона: http://www.melissadata.com/fonedata.html

вы также можете кэшировать их, используя memcache или APC, что сделает его быстрее, поскольку ему не нужно запрашивать данные из API или базы данных.

4 голосов
/ 01 ноября 2011

Пара идей ... если бы возвращались одни и те же пользователи, кэширование данных в другой таблице было бы очень полезно ... вы бы только просмотрели их один раз и получили их для возвращения пользователей. Перечитав вопрос, похоже, вы это делаете.

Другой вариант - создавать новые темы, когда вам нужно выполнить поиск. Это может быть новый поток для каждого запроса, или, если это невозможно, у вас может быть n служебных потоков, готовых выполнить поиск и обновить результаты.

...