2012-06-20 2 views
0

Я пытаюсь создать процедуру, которая будет выполняться на сервере каждые 1 мин (более или менее). Я знаю, что могу добиться этого с помощью cronjob, но я обеспокоен, допустим, у меня около 1000 задач (1000 пользователей, которые система должна будет проверять каждые 1 мин), не убить ли сервер?Какая технология/технология в реальном времени лучше всего подходит для работы в тяжелой петле каждые 1 минуту?

Эта система должна синхронизировать данные из API Google AdWords и делать с ней что-то. например, он должен прочитать кампанию из Google и каждые 1000 показов или кликов, она должна что-то сделать. Поэтому, очевидно, мне нужно продолжать подключаться к adwords api, чтобы просмотреть статистику в реальном времени. Представьте, что эта процедура должна работать с 1000 зарегистрированными пользователями.

Какую технологию я должен использовать в своем случае, когда мне нужно запустить тяжелую петлю каждые 1 мин? Большое спасибо, Oron

+0

Это зависит от того, что это за задача, и от ОС. Что такое ОС, и можете ли вы рассказать нам больше о задаче? –

+0

Да, пожалуйста ... нужна дополнительная информация. –

+0

Прежде всего, большое спасибо. Я попытаюсь объяснить поведение системы, в которой я нуждаюсь. Эта система должна синхронизировать данные из API Google AdWords и делать с ней что-то. , например, он должен прочитать кампанию из Google и каждые 1000 показов или кликов, она должна что-то сделать. Поэтому, очевидно, мне нужно продолжать подключаться к adwords api, чтобы просмотреть статистику в реальном времени. Представьте, что эта процедура должна работать с 1000 зарегистрированными пользователями. Спасибо, Oron – user1469227

ответ

0

В идеале, если вы используете распределенный рабочий процесс, вам лучше обслуживать несколько пользователей таким образом.

-3

вы можете защитить переменную, которая содержит временную метку последнего прогона вашего цикла. Теперь, когда пользователь посещает вашу страницу, проверьте, установлена ​​ли ваша отметка времени более 1 минуты. Если он старше, запустите цикл и проверьте всех пользователей.

поэтому ваш цикл работает только тогда, когда на вашем сайте есть пользователи. это экономит массу производительности сервера.

+0

... и будет использовать/тратить ресурсы сервера только в тот момент, когда вы действительно хотите их, обрабатывая запрос. – smassey

0

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

+0

Прежде всего, большое спасибо. Я попытаюсь объяснить поведение системы, в которой я нуждаюсь. Эта система должна синхронизировать данные из API Google AdWords и делать с ней что-то. , например, он должен прочитать кампанию из Google и каждые 1000 показов или кликов, она должна что-то сделать. Поэтому, очевидно, мне нужно продолжать подключаться к adwords api, чтобы просмотреть статистику в реальном времени. Представьте, что эта процедура должна работать с 1000 зарегистрированными пользователями. Спасибо, Oron – user1469227

0

Есть две основные проблемы с тем, что вы пытаетесь сделать, первое более серьезное, чем другое.

  • API AdWords не дает вам статистику в режиме реального времени, отчеты обычно откладываются на 3 часа. См. http://adwordsapi.blogspot.com/2011/06/statistics-in-reports.html для получения дополнительной справочной информации.

Что вы можете сделать, это выбрать временные рамки (например, раз в два часа), для которых вы хотите запускать отчеты, а затем придерживаться этого графика. Чтобы дать вам приблизительную оценку, вы можете запускать 10 отчетов параллельно и считая, что для загрузки и анализа отчета требуется 10 секунд (что дает вам пропускную способность 1 отчет/секунду, но это строго зависит от скорости вашего интернет-соединения, нагрузки на серверах API AdWords, насколько велики ваши клиенты, какие столбцы, сегменты и диапазоны дат вы запрашиваете данные и т. д. Для крупных клиентов время может быть легко запущено за несколько минут за отчет), вы можете обновить 1000 учетных записей только в 20-30 минут.

  • Даже если вы хотите пойти намного быстрее, AdWords API не позволит вам это сделать. У этого есть механизм ограничения скорости, который ограничит вашу скорость вызова API, если вы попытаетесь сделать слишком много звонков за очень маленький период. См. http://adwordsapi.blogspot.com/2010/06/better-know-error-rateexceedederror.html.

Я советую задать этот вопрос на официальном форуме для API Adwords - https://groups.google.com/forum/?fromgroups#!forum/adwords-api. Вы обязательно найдете пользователей, которые раньше занимались подобными проблемами.

Смежные вопросы