NYCPHP Meetup

NYPHP.org

[nycphp-talk] PHP and running background tasks...

Paul Houle paul at devonianfarm.com
Sun Feb 25 13:56:56 EST 2007


Brian Dailey wrote:
> From the last link: "Note that you should never attempt to use these 
> process control forking functions when using a webserver; you should 
> only fork applications when using the PHP command line client."
    Another strategy is to write a long-running service task in a cron job.

    For instance,  imagine that you've got a web application that sends 
bulk e-mail,  say groups in the 1000-10,000 people range.

    It would be pretty crazy to have a single PHP script hanging there,  
running a foreach() loop to send 10,000 messages.  All kinds of bad 
things can happen -- for instance,  the sender thinks that the app is 
busted,  reloads,  reloads,  and reloads again,  so everybody ends up 
getting 4 messages.

    A good answer in this case is to write a cron job/scheduled task 
that wakes up every five minutes,  sends a few mails,  and then dies.  
The background job is controlled by a work queue,  which could be a 
table in the database.   A system like this can send e-mail messages,  
gather information,  or do computations in an orderly way -- it's easy 
to put in job controls of various sorts.



More information about the talk mailing list