Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带数据提供程序的Yii2 memcache_Yii2_Memcached_Dataprovider - Fatal编程技术网

带数据提供程序的Yii2 memcache

带数据提供程序的Yii2 memcache,yii2,memcached,dataprovider,Yii2,Memcached,Dataprovider,更新数据库时,使用dataProvider构造和更新我的密钥/值的正确方法是什么?首先,我从数据库中查找所有新闻。我应该如何添加或更新密钥/值对的值?我一直都是这样,从来没有用疑问来抓住障碍。红色有很多材料,但没有找到正确的方法 $mem = new \Memcached(); $mem->addServer("localhost", 11211); $result = $mem->get('categoriesProvider'); if(!$result){ $wher

更新数据库时,使用dataProvider构造和更新我的密钥/值的正确方法是什么?首先,我从数据库中查找所有新闻。我应该如何添加或更新密钥/值对的值?我一直都是这样,从来没有用疑问来抓住障碍。红色有很多材料,但没有找到正确的方法

$mem = new \Memcached();
$mem->addServer("localhost", 11211);
$result = $mem->get('categoriesProvider');

if(!$result){
    $whereString = " active = 1 ";
    $categoriesProvider = new ActiveDataProvider([
         'query' => News::find()->where($whereString),
         'pagination' => [
         'pageSize' => 6,
         'route' => Yii::$app->getRequest()->getQueryParam('first_step'),
                ],
         ]);
 $mem->set("categoriesProvider", $categoriesProvider);
 }
 $result = $mem->get("categoriesProvider");
以下是我的看法:

echo ListView::widget([
     'dataProvider' => $result,
     'itemView' => '_blogCategories',
     'layout' => '{items}<ulclass="pagination theme-colored">{pager}</ul>',
     'pager' => [
     'maxButtonCount' => 3,
     'options' => ['class' => 'pagination flRight'],
      ],
echo ListView::widget([
“数据提供程序”=>$result,
“项目视图”=>“\u博客类别”,
“布局”=>“{items}{pager}”,
“寻呼机”=>[
“maxButtonCount”=>3,
'选项'=>['class'=>'分页右'],
],

]))

作为memcached和yii2用户本人,我可以建议您将缓存放在数据和提供者之间,最简单的方法是查询您需要的数据,然后以最轻的格式缓存结果(作为项目数组,其中项目本身就是数组),然后使用它显示数据或传递给可以显示数据的提供者

Memcached的YII2接口允许您利用新方法getOrSet(),在该方法中,您可以使用回调来生成要缓存的数据(如果数据还不存在),从而减轻您自己创建此类流的负担

一般来说,将复杂对象的实例存储在缓存中并不像YII2中那样是个好主意