On Sep 21, 4:57 am, "Humble Groups" <[EMAIL PROTECTED]> wrote:
> Background
>
> I have scenario where I have 15000+ rows of messags in Mysql, I
> present them with pagination. It works well till 10 pages, if the user
> suddenly press the last page, Mysql takes lot of time,
A database will be inevitably slow(er) when running
SELECT * from aTable LIMIT *bigNumber*,numberOfResults.
emphasis on the bigNumber.
You might want to consider, if it is possible, changing your logic
such that you can achieve:
SELECT * from aTable WHERE sequence > 15000 LIMIT 0,numberOfResults.
Or any other change such that you are modifying the condition and not
the number of pages.
If you wanted to stick with your cachable elements aproach, I think
the mini-controller idea which is listed in the
http://groups.google.com/group/cake-php/web/frequent-discussions could
be adapted to do what you are asking (look at how it generates the
cache files, for the data).
hth,
AD
I figured out
> that it is due to my shared hosting server is under heavy load.
> Either I do something or host is somewhere else. I want to take the
> challenge.
>
> Since I provide just pagination, no sorting based on other columns,
> after 2-3 pages, the page will always display the same set of
> messages, I am thinking of caching them and serve it instead of
> hitting the database.
>
> I am planning to run a process which will select the rows from the
> table pagewise (15 messages) and create static cache element and keep
> it ready instead of creating on demand (I can run at night when the
> load is low, instead of creating on demand on day time when the server
> load is high).
>
> How can I create more than one cachable elements from controller. ?
>
> The code might look like this, need to create elements like
> elements_project1_index_00001_000015, etc.,
>
> controller
>
> function create_static_pages() {
> for ($i = 1 ; $i <= $pages - $this->index_threshold; $i++) {
>
> $messages = $this->Post->findAll(null, null, "posted_on ASC",
> $this->page_size, $i, null);
> $view->element('index-page', array('cache' => '+365 days',
> 'plugin' => $this->group_name."_"
>
> .$messages[0]['Post']['id']."_".$messages[count($messages) -
> 1]['Post']['id']));
> }
> }
>
> How can I force creating all cacheable elements in tmp/cache/views ?
> The above $view->element doesn't seem to work.
>
> MySQL database is already disabled due to have load, I have to make
> this work in 2-3 days.
>
> Please advise.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---