Yep... I know...
The async starts with the Ajax on the client end and is picked up by the frontend controller. The frontend controller schedules the job or spawns a backend process immediately to handle it. The backend process (as alluded to) can be invoked via cron although the minimum interval is limited to 1 minute.
Regardless, if this is in a shared hosting environment, there may be policies in place that terminate jobs (cli or not) running for more than x minutes. If that's the case, some type of job restart mechanism has to be designed (i.e. tracking script execution time, store temporary results, exit elegantly in prep for restart before the O.S. or other process kills the job in process.) [Of course Apache and IIS have timeout functions that might come into play depending on how the jobs are run.]
I've got some async stuff working for inter-server process communications which is a combination of PHP, .NET, WSDL, MySQL, MSSQL, (nix) cron jobs, and (windows) task scheduler jobs.
~~~ On another note... ~~~
Although this is somewhat Zend Framework specific, here's some interesting reading:
The Mysteries Of Asynchronous Processing With PHP - Part 1:... The Mysteries Of Asynchronous Processing With PHP - Part 2:... The Mysteries Of Asynchronous Processing With PHP - Part 3:...