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

Reply via email to