Запустите запланированный сценарий Azure PHP для каждого экземпляра.

У нас есть веб-сайт, работающий на нескольких экземплярах Azure — обычно от 2 до 5.

Есть PHP-скрипт, который я хотел бы запланировать запускать каждые несколько минут для каждого экземпляра. (Он просто создает локальную копию данных из системы, которая не может справиться с нагрузкой всех наших пользователей, попав в нее в режиме реального времени.)

Если бы это был только один экземпляр, это было бы легко — я бы использовал Azure Scheduler для вызова www.example.com/my-scheduled-task.php каждые 5 минут

Но скрипт должен работать на каждый экземпляр, так что каждый экземпляр имеет достаточно актуальную копию данных. Как бы вы достигли этого? Я не могу понять, есть ли что-то в планировщике Azure или мне нужно посмотреть какой-нибудь сценарий запуска?

2

Решение

Вы можете использовать непрерывную веб-работу для этого.

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

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

4

Другие решения

По моему опыту, как сказал @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 слишком долго простаивал.

1

По вопросам рекламы [email protected]