Есть много способов сделать это (и да, вы можете сделать это из PHP).
Однако большой вопрос в том, чего вы действительно хотите достичь.
ВВ конце концов, не имеет значения, максимально ли загружен ЦП сервера одним процессом, , если этот процесс оказывает минимальное влияние на все остальное, что сервер делает .Поэтому первое, что вам нужно сделать, это посмотреть, что происходит со всеми другими запросами в системе.
Если вы заметите существенное неблагоприятное воздействие, то решения:
- запустить необходимую обработку в изолированной программной среде с ограничением количества ресурсов, которые он может использовать
- запустить процесс на другом компьютере, где его влияние на другие процессы будет снижено до приемлемого уровня
- запускать процесс в то время, когда запланировано меньше других процессов
Запуск процесса через cron будет примером варианта 3, но вы явно спросили, как реализовать вариант 1.
Поскольку узким местом является ЦП, и снова , если вы видите влияние на другие транзакции , тогда два решения для метода 1 в Linux будут:
- запустить обработку в отдельном процессе, запущенном через 'nice'
- Если вы работаете в среде без потоков, возьмите в аренду curent pid (но не забывайте:сбросьте приоритет после его завершения).
Вам не нужен второй компьютер для второго метода - вы можете использовать набор задач, чтобы установить для процессора для большинства процессов (например) все, кроме одноговаших ядер - и зарезервируйте ядро для запуска тяжелых процессов.
В любом случае вам следует ознакомиться с проблемами вызова долго выполняющихся процессов через веб-сервер.
Обратите внимание, что использование cron было бы разумным подходом, если вы хотите сгенерировать файлы до того, как они будут созданы.запрашивается - но если вы хотите сделать это по требованию, то «at» будет лучшим решением.