У нас есть веб-сайт, работающий на нескольких экземплярах Azure — обычно от 2 до 5.
Есть PHP-скрипт, который я хотел бы запланировать запускать каждые несколько минут для каждого экземпляра. (Он просто создает локальную копию данных из системы, которая не может справиться с нагрузкой всех наших пользователей, попав в нее в режиме реального времени.)
Если бы это был только один экземпляр, это было бы легко — я бы использовал Azure Scheduler для вызова www.example.com/my-scheduled-task.php каждые 5 минут
Но скрипт должен работать на каждый экземпляр, так что каждый экземпляр имеет достаточно актуальную копию данных. Как бы вы достигли этого? Я не могу понять, есть ли что-то в планировщике Azure или мне нужно посмотреть какой-нибудь сценарий запуска?
Вы можете использовать непрерывную веб-работу для этого.
Просто настройте свой php-скрипт, чтобы получить цикл, и добавьте несколько минут сна между запусками вашего кода.
Непрерывное веб-задание будет выполняться на всех ваших экземплярах, и даже если что-то не получится, оно будет восстановлено.
По моему опыту, как сказал @AmitApple, хорошим решением будет запуск веб-работы с PHP на каждом экземпляре веб-приложения. Тем не менее, я думаю, что вы можете попытаться использовать запланированное веб-задание с выражением CRON для обеспечения времени запуска, а не непрерывное с временем ожидания. И, пожалуйста, убедитесь, что сценарий может быть завершен в промежуток времени.
Вы можете обратиться к секция Create a scheduled WebJob using a CRON expression
из документа Run Background tasks with WebJobs
знать, как начать.
Пожалуйста, смотрите примечание раздела Create a continuously running WebJob
https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/#CreateContinuous.
Замечания:
Если ваше веб-приложение работает более чем в одном экземпляре, постоянно работающий WebJob будет работать во всех ваших экземплярах. Запланированные и запланированные веб-задания выполняются на одном экземпляре, выбранном Microsoft Azure для балансировки нагрузки.
Чтобы непрерывные веб-задания работали надежно и во всех случаях, включите параметр конфигурации Always On * для веб-приложения, иначе они могут прекратить работу, если узел хоста SCM слишком долго простаивал.