in reply to Long running task from web app

For this type of thing I find it's better to use a backend daemon instead of running the process directly from the web server. Use something simple like Proc::Daemon and have it monitor a queue file or database table, and fork off a process to run the requested task. That should work easily on most platforms.

Replies are listed 'Best First'.
Re^2: Long running task from web app
by roboticus (Chancellor) on Mar 04, 2006 at 17:02 UTC
    I'd second friedo's suggestion. I've typically done this sort of thing by having a daemon/service sitting in the background waiting for a signal to start. Then your web app may simply send the signal. I've done it using many techniques:

    Two techniques you can use to let the daemon/service take no CPU:
    1) Use a named pipe, where the daemon/service is blocking while reading the pipe. This is handy when you want to send special commands/arguments to the background task.
    2) Use a mutex. Simple when you don't have to pass params to the background task.

    Two techniques you can use if you don't mind the background daemon/service periodically polling:
    1) Use a plaintext file. Web app creates file with specified name, daemon/service starts job when it notices the file appear.
    2) Put a particular row in a "misc" table, and daemon simply looks for it's entry to appear.

    --roboticus