Есть файл который запускается каждые N минут. Когда запускается этот файл там происходит примерно следующее:
Если делать последовательно, получается критическое время ожидания. Важно что бы 100 групп выполнялись не более 1 минуты. Если сделать эту задачу не последовательно а параллельно, в теории это будет занимать примерное 10 секунд и даже меньше. Вопрос уже будет состоят в мощности сервера, но это не проблема.
Можно конечно создать десятки файлов и поставить их в КРОН задачу. Но мне кажется есть куда элегантнее решение да и конце в концов правильное.
В контексте выполнения скрипта PHP изначально однопоточный. Есть разные ухищрения по распараллеливанию, но они по своему духу близки расставлению костылей.
Варианты есть такие:
UPD в связи с обновлением вопроса
Скорее всего узким местом у вас является запрос к API VK. В этом случае можно использовать curl_multi_init, для распараллеливания запросов.
Можешь попробовать расширение pthreads или multicurl (обрати внимание на библиотеку http://docs.guzzlephp.org/en/stable/). Может быть тебе подойдет этот вариант http://php.net/manual/ru/function.pcntl-fork.php. Как я понял, список групп можно запросить один раз и потом, уже исходя из содержимого списка, необходимо выполнять запросы ко внешнему API.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости