Yii Framework Forum: Cache I Paginacja - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Cache I Paginacja Rate Topic: -----

#1 User is offline   Narkon 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 03-December 13

Posted 03 December 2013 - 03:42 PM

Witajcie,

aktualnie jestem w trakcie realizacji dosyć dużego projektu w którym wykorzystuję Cache na porządku dziennym z uwagi na dużą ilość zapytań i danych. Powstaje pytanie w jaki sposób utowrzyć paginacje w Yii przy użyciu CdbCache

Może podam przykład jak akutalnie wygląda przykładowa akcja controllera:

	public function actionIndex()
	{

		$streams_cached = Yii::app()->cache->get('streams');
		if($streams_cached === false) {
			$streams = PsStreamsMainModel::model()->findAll();

			if($streams !== null) {
		
				foreach($streams as $stream) {
					$list_stream[] = $stream['channel_name']; 
				}
				
				$curl = Yii::app()->curl->get('//api.*****/kraken/streams?channel='.strtolower(implode(',', $list_stream)), array());
				$array_with_streams = json_decode($curl, true);
			}

			//cache it
			Yii::app()->cache->set('streams', $array_with_streams, 300);								
		}

        $streams_cached = Yii::app()->cache->get('streams');
		$this->render('index', array('streams' => $streams_cached));
	}


Może krótki opis zmiennych:
$streams_cached
zwraca tablicę array z danymi (w środku po kilka rekordów oznaczonych kolejno array[1], array[2]).

W jaki sposób utworzyć teraz paginacje idąc zgodnie z ideą CPagination:

    $criteria=new CDbCriteria();
    $count=Article::model()->count($criteria);
    $pages=new CPagination($count);

    // results per page
    $pages->pageSize=10;
    $pages->applyLimit($criteria);
    $models=Article::model()->findAll($criteria);

    $this->render('index', array(
    'models' => $models,
         'pages' => $pages
    ));


Proszę o pomoc, ponieważ już nieźle się nagłowiłem jak to połączyć z cache-em

Pozdrawiam
0

#2 User is offline   afnwork 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 09-May 12

Posted 04 December 2013 - 07:12 AM

Wystarczy, że stworzysz metode w modelu odpowiedzialna za wczytanie danych zamiast korzystać z findAll. Możesz też http://www.yiiframew...foreFind-detail użyć metody before do sprawdzenia cache przed wczytaniem.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users