You can use php, pretty much like any other scripting language(without involving web), so yeah it could be a command line tool running in the background, started by cron etc
We use a lot of PHP cli cron jobs at my work. It works fairly well, but isn't as stable as I'd like. Any bug which could cause a fatal interpreter error can't be caught by your code so it's difficult to diagnose problems when they crop up in production.
Agree, I have the same problem with my backend apps. Maybe php5's error handling should do the trick - but haven't migrated to php5 yet anyhow.
We're using PHP5 and the exception handling is better, but interpreter errors just kill the process, full stop. We're writing watchdog processes just to monitor the nightly batches just so we have better information if one of them goes haywire.