|
Posted by Jerry Stuckle on 07/16/07 11:19
Jim wrote:
>>> I'm developing a CMS and I'd like to be able cache the site "tree" in
>>> a multi-dimensional array in shared memory (far too many sql calls
>>> otherwise). When someone adds an item in the tree I need to be able to
>>> read in the array from shared memory, add the new item, then write it
>>> back to shared memory.....all in one atomic action.
>>> I've done plenty of research and short of using something like
>>> eaccelerator or mmcache I'm stuck with PHP semaphores which even then
>>> don't appear to be thread safe, only process safe (correct me if I'm
>>> wrong) - and then I'm restricted to *nix systems.
>>> Is there any way to create a method of doing the above which will work
>>> on *nix and Windows, whether it's multi-threaded or single-threaded?
>
>> Jim,
>>
>> Use a database. There are dozens around which use databases; if
>> implemented properly they can be quite efficient.
>
> Hi Jerry,
>
> If I could think of a way of doing it efficiently then I'd stick with
> db only, but I can't see how. For example, I have a table which
> represents the structure of the site, so to put it simply each record
> has an id and a parent id. To build say a left hand nav I may need to
> call 3 or 4 sql statements to get all the data I need which I'd like
> to avoid doing if possible.
>
> Thanks,
>
> Jim.
>
It is efficient - and probably a lot more so than what you're trying to
do. Not only do you need to cache it in memory, but you need ways to
identify the cached data, determine if it is in memory, if not, load it
into memory and a whole bunch of other things. All of these can easily
take more time than a simple database (or three or four) access(s).
There's a good reason why every CMS today uses databases - it works, and
it works well.
And don't prematurely optimize your code.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Navigation:
[Reply to this message]
|