NYCPHP Meetup

NYPHP.org

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

Brian Dailey support at dailytechnology.net
Sat Feb 24 22:27:57 EST 2007


That's actually a really good suggestion. Instead of just scheduling a 
job that updates all caches that are X number of days old I can just 
update the ones that have been requested in the past day.

I appreciate all of the input!

- Brian

inforequest wrote:
> Brian Dailey support-at-dailytechnology.net |nyphp dev/internal group 
> use| 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."
>>
>> I guess that kind of answers my question. exec() might actually be the 
>> only solution, I'm not sure - it just seems somewhat untidy. I would 
>> have to log any failures as I go along, I guess.
>>
>> As an explanation of what I'm doing...
>>
>> I have a cache. If an item in the cache is more than a week old, I 
>> want to re-fetch the item. I could schedule a job to check for all 
>> week-old objects and re-fetch them, but I think it would be more 
>> efficient to only run the re-fetch if someone loads the cached item 
>> and it's more than a week old (it's ok if web user gets the old item 
>> on that occurance). I don't want to make the user wait for fetching 
>> the cached item. I'd like to hand it off to another script that 
>> fetches it in the background, and doesn't tie up the user with the 
>> operation.
>>
>> I hope that clarifies what I'm trying to do. Perhaps exec() is my only 
>> option.
>>
>> - Brian
> 
> 
> It sounds like a "dumb cache" or "lazy cache" I've done this many times, 
> many different ways.
> 
> One way is have a front controller either displays an existing  file or 
> dispatches to a dynamic view script, based on date check. The dynamic 
> script replaces the "dumb cache" file version. Sort of typical cache 
> behavior.
> 
> Another way is to store "expired" token in the database, and have the 
> view controller tick it when a page request comes in and the file is 
> noted to be out of date. A CRON-based script regenerates the out of date 
> files based ona query of the expired bits. If the regeneration is fast 
> enough,  I like to use a 404 controller to do the regeneration 
> automagically on page request.
> 
> In your case you've specified that your user is allowed to see an out of 
> date file, and it sounds like your regeneration takes a while, so I'd 
> use the database (or a flat file if you don't already maintain a db 
> connection.. the cron'd script can be thorough with cleanup tasks 
> because it really does hav all day to get the job done).
> 
> Hope that's helpful.
> 
> -=john andrews
> Competitive Webmaster blogging at www.johnon.com
> 
> 
> 
> 
> 
> _______________________________________________
> New York PHP Community Talk Mailing List
> http://lists.nyphp.org/mailman/listinfo/talk
> 
> NYPHPCon 2006 Presentations Online
> http://www.nyphpcon.com
> 
> Show Your Participation in New York PHP
> http://www.nyphp.org/show_participation.php
> 
> 



More information about the talk mailing list