Регулирование времени вызова API в PHP

1

Поэтому я не уверен на 100%, как спросить об этом. Я создаю веб-сайт, который сделает несколько вызовов API для сбора и хранения информации. Не удивительно. После некоторых тестов и теории я могу легко наложить ограничение на 30 вызовов в секунду, наложенное на API, если бы сайт собирал столько трафика, сколько я предсказываю. Вызовы будут инициироваться cron. Затем скрипт выполнит 30-битные вызовы API. Мне нужен способ замедления сценария, так что, возможно, около 5 звонков поступают в секунду, данные хранятся в базе данных, а сценарий завершается, а затем снова запускается crontab в верхней части следующей минуты. Любые предложения приветствуются.

Благодарю вас, Дэйв

Теги:
time
crontab

1 ответ

2
Лучший ответ

скорость

Замедление работы легко: добавьте вызовы usleep() между каждым вызовом API. Вы могли бы жестко запрограммировать вызовы, чтобы сказать, 1/5 в секунду, чтобы сделать не более 5 секунд, или вы могли записать, сколько звонков вы делаете, и только начинать замедлять, когда это необходимо.

Еще проще, вы можете сделать 5 звонков, подождать 1 секунду, а затем сделать еще 5 вызовов.

Это работает независимо от того, как часто вы вызываете скрипт.

Предотвращение одновременного выполнения сценария

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

Если вы вызываете скрипт достаточно редко, и абсолютно уверены, что он не будет перекрываться, тогда вы сможете избежать неприятностей.

Однако, конечно, вы можете реализовать механизм блокировки. Это может быть так же просто, как файл блокировки, который вы проверяете при запуске скрипта. Если он существует, выйдите. В противном случае создайте файл блокировки, запустите сценарий и удалите файл блокировки. Как отказоустойчивый, вы не можете просто проверить его существование, но также и то, что оно было создано за последний час (или любой запас безопасности, который вы хотите использовать).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню