Я тоже придерживаюсь варианта с CRON-ом.
Лично я бы складывал бы задачи в таблицу в БД, где фиксировались бы статусы выполнения задач, а в кроне ежеминутно отрабатывал бы некий скрипт (хоть на php хоть на чем другом), который бы чекал эту таблицу, запускал новые задачи, и удалял уже отработанные.