У меня есть несколько длительных PHP-скриптов CLI, которые регулярно запускаются через cron. Я бы хотел, чтобы они выполнялись как можно быстрее, но не оказывали серьезного влияния на другие процессы (такие как скорость отклика веб-сервера).
В настоящее время я запускаю скрипт с
nice -n 19
, а также экспериментировали со вставкой очень коротких вызовов usleep (), таких как 50 микросекунд, в мой основной цикл. Тем не менее, это не всегда дает так же быстро, как хотелось бы на одноядерной виртуальной машине. Кстати, я не насыщаю оперативную память, поэтому никакой подкачки не происходит.
Я читал, что usleep () - это системный вызов, который позволит планировщику назначать приоритет другим процессам при необходимости быстрее, чем если бы у меня не было системных вызовов.
Что мне интересно, так это лучший способ сделать это в PHP. Например, вызов, который не спит, но сразу дает приоритет.
Кроме того, я знаю, что другие языки более эффективны, чем PHP, но это часть более крупного приложения, написанного на Symfony + Doctrine. Я не хочу разделяться на несколько языков и теряю преимущества бизнес-логики моделей приложения.