Сон действительно, как вы обычно делаете это.В PHP sleep
может спать только полные секунды, поэтому используйте usleep
или time_nanosleep
, если вы выполняете второй метод.
Если вы хотите сделать предположение, что все ваши запросы выполняются мгновенно, ивы просто запускаете пакет, тогда очень легко ограничить до 20 рядов за 60 секунд: спать 3 секунды после каждого ряда.Если ваши запросы не являются мгновенными, вы добавляете меньше строк в секунду.
Если вы хотите, вы можете рассчитать время вставки и поспать 3 секунды, это гарантирует 20 строк в 60 секунд,до тех пор, пока для вставки каждой строки по отдельности требуется менее 3 секунд.Если они будут работать дольше, вы упадете ниже 20 за 60 секунд.Я полагаю, что это на самом деле не стоит - у него будет плохой побочный эффект от того, что ваш инсертор будет работать тяжелее, когда база данных уже перегружена.
Если вы не в режиме автоматической фиксации, вам понадобитсясовершать довольно часто - обычно плохая идея хранить незафиксированные изменения дольше, чем необходимо.
Наконец, если вам нужно поддерживать 20 строк / 60 секунд, усредненных за более длительный период времени (и ваши входящие данные являются пакетными)Вы получаете возможность перейти к фильтру токенов-корзин: каждые 3 секунды (60 ÷ 20 секунд) вы добавляете «токен» в «корзину».Ведро вмещает до 20 жетонов.Каждый раз, когда вы вставляете строку, вы удаляете токен из корзины - если корзина пуста, вы ждете, пока ее нет.