Я делал так:
В кроне задание выполняемое раз в минуту.
Задание смотрит в папку и проверяет наличие файла.
Если файл появился (созданный к примеру скриптом или руками), то крон удаляет этот файл и стартует файл файл вашего длительного процесса.
<?php
# запуск импорта
if (file_exists('www/xxx.xxx/process.sig')){
unlink('www/xxx.xxx/process.sig');
exec('/opt/php53/bin/php process.php');
}
process.php выполняется сколько угодно долго.