Самый правильный вариант, на мой взгляд - заняться профилированием Вашего интернет-магазина. История, обычно, простая - делаем локальную копию к себе и запускаем профилирование. Смотрим что тянет, опимизируем.
В процессе, обычно, используется xdebug + blackfire + бубен
Если уж Вам хочется простое решение, тогда выгружайте список Ваших URL-ов куда-нибудь в отдельную таблицу или файл, после чего в 20-30 потоков запускайте Ваш скрипт по крону. Вопрос про 20-30 потоков решается так:
- Используйте два GET-параметра, скажем s & f
- Добавляйте в свой cron задания вида some-domain.com/cache-walker.php?s=100&f=300
- Сам скрипт, будет получать весь список URL для обхода, брать из них только 200 записей между 100 и 300 и открывать их, скажем, через curl
Заданий на cron Вы можете добавить столько, сколько Вам надо. Обычно, лимитов на их количество у провайдеров нет. Если вдруг, какой-то URL Вашего сайта будет открыт дважды, ничего страшного не произойдет. Про нагрузки на хостинг в этот момент сказать ничего не могу. Надо смотреть Ваши графики, спрашивать хостера. Количество потоков и/или количество записей для прохода за раз подбирайте эксперементальным путем.
Список самих URL-ов Вам в любом случае придется как-то маркировать, например, записывать timestamp последнего прохода. Задачи на CRON ставьте раз в минуту. Если timestamp менее 24 часов, просто игнорьте проход по такому URL. В самом скрипте можете прописать лимит на работу с 2 ночи до 6 утра.
Данное решение можно описать как "Божественный костыль имени
Максим Кудрявцев ". На какое-то время это позволит Вам решить проблему. Далее нужно будет все равно либо заниматься профилированием либо переезжать на какую-то другую платформу. Когда именно никто не знает, даже автор доброй сотни божетсвенных костылей
Максим Кудрявцев