FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Best strategy for creating an application scoped variable?
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: Best strategy for creating an application scoped variable? [message #172043 is a reply to message #172035] Fri, 28 January 2011 07:30 Go to previous messageGo to previous message
Denis McMahon is currently offline  Denis McMahon
Messages: 634
Registered: September 2010
Karma:
Senior Member
On 28/01/11 03:24, Jerry Stuckle wrote:
> On 1/27/2011 9:40 PM, Peter H. Coffin wrote:
>> On Thu, 27 Jan 2011 16:08:01 -0800 (PST), laredotornado(at)zipmail(dot)com
>> wrote:

>>> I'm using PHP 5.2. I would like to populate a hash from a database
>>> query. The hash should be available to all users of the application
>>> and would only be updated very occasionally. The database query is
>>> expensive, and I would prefer only to run it once, whenever PHP was
>>> restarted, or on the rare occasion when the database data changed.
>>> What is the best strategy for implementing this hash?

>> I'm confused. What "hash" do you want to "populate"? Do you just want to
>> stick a pregenerated value in a table? Maybe you need an insert/update
>> trigger?

> That was my thought - create a table in the database with the required
> information and update it based on a trigger. Much easier than trying
> to use shared memory or the like.

> I guess an alternative would be to create a PHP file from the generated
> data and include it where necessary. But there's always the problem of
> updating it when the web server restarts (PHP doesn't "restart" - it
> starts every time a request is made for a PHP file - and only then).

I guess the included file could be created with a cron job, say every 6
hours or so?

To try and minimise file access conflicts, it might be best to create it
with a temporary name and then using a shell "mv temp_file actual_file"
at the end of the cron job.

However, I'd have thought that copying the query results into a new
table would be the best answer, I guess it would be a static snapshot of
the expensive query, and then access it as "select * from <table>",
maybe running a cron process to generate it every 6 / 12 / 24 / whatever
hours.

Or create an extra table with a time field that you update when you run
the query, and check this field every time you access the data, if the
data is older than some defined limit, call the expensive query to
update the snapshot table.

Rgds

Denis McMahon
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Using server to list CSS page list in menu
Next Topic: passing variable to a nested array
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Fri Sep 20 16:33:24 GMT 2024

Total time taken to generate the page: 0.04199 seconds