У меня есть несколько сценариев, которые запускаются много раз каждый день. Некоторые бегут каждые 5 минут, другие каждые 10, 15, 60 минут и т. Д. c. Большинство сценариев имеют дело с большими объемами данных, которые обрабатывают каждую строку и обрабатывают каждую строку.
Cron моего хоста не позволяет мне решать, когда запускается каждый сценарий, я могу выбрать только число с интервалом в несколько минут, поэтому сценарии, которые запускаются каждые 5 минут, работают с 00,05,10,15 ... и сценарии, которые запускаются каждые 10 минут, работают с 00,10,20,30 ... et c.
Это означает, что многие сценарии запускаются с 00.
Это не будет проблемой, за исключением того факта, что сервер также используется обычными пользователями, которым часто требуется только то, что не должно занимать много времени. Но если им случается делать это, когда запущено множество этих сценариев, все замедляется, и они не могут делать даже эти простые вещи, не ожидая долгое время.
Я где-то читал, что сон Функция остановит ЦП от обработки данных и позволит запускать меньшие задачи. Вы знаете, так ли это? Если бы я вставлял sleep (1) после каждого l oop во многие из этих сценариев, это улучшило бы производительность, которую видят отдельные пользователи, выполняющие небольшие задачи, то есть позволили бы им пропустить строку?
Пример скрипта A, который запускается каждые 5 минут
foreach ($a_hundred_things as $one_thing) {
do_this($one_thing);
// would adding sleep(1); here improve performance?
}
Скрипт B, который запускается, когда пользователь нажимает кнопку
do_this_thing_that_only_takes_a_minute();
В данный момент, если скрипт, такой как Script A (и многие другие, как это), пользователь иногда должен будет ждать (несколько минут), чтобы запустить сценарий B. Я бы хотел, чтобы B мог как-то иметь приоритет, поскольку это то, что не может ждать, в то время как автоматические сценарии c могут позволить себе быть отложенными.
Будет ли добавление sleep (1) в сценарий A (и все остальные похожие скрипты, запущенные одновременно) улучшают производительность? Я знаю, что мог бы попробовать это проверить, но там задействовано много сценариев, и, похоже, это происходит не каждый раз.