Yii2 - 从控制台使用APC缓存

时间:2018-04-12 09:01:59

标签: caching yii yii2 apc

我正在尝试使用console命令将数据添加到APC缓存中,但到目前为止还没有成功。

当我将其作为标准操作(控制器/操作)运行时,此代码非常有效:

    public function actionUpdateExchangeRate()
    {

        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_URL            => 'https://openexchangerates.org/api/latest.json?app_id=xxxxxxx',
            CURLOPT_USERAGENT      => 'Exchange Rates'
        ));

        $json = curl_exec($curl);

        curl_close($curl);

        $rates = json_decode($json);

        Yii::$app->cache->set('rates', $rates->rates);

    }

我使用相同的代码创建了一个命令,当我尝试设置缓存时,什么也没发生。

var_dump('<pre>', Yii::$app->cache->set('rates', $rates->rates), '</pre>');die;

在以控制器/操作运行时转储 true ,从命令运行时转发 false

console.php 中,我将此配置添加到组件中(在 web.php 中相同):

    'cache' => [
        'class'     => 'yii\caching\ApcCache',
        'keyPrefix' => 'test',
        'useApcu'   => true
    ],

PHP版本是:

PHP 7.2.4-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Apr  5 2018 08:53:57) ( NTS )

知道我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

确保您已在apc.enable_cli中启用php.ini

但是使用ApcCache作为控制台没有多大意义。 APCu缓存是按进程进行的,因此在命令结束后它将被删除,并且控制台命令不会与Web请求共享缓存。

  

主要用于测试和调试。设置此选项可启用APC for CLI的PHP版本。在正常情况下,在每个CLI请求上创建,填充和销毁APC缓存并不理想,但对于各种测试场景,能够轻松地为CLI版本的PHP启用APC非常有用。

https://secure.php.net/manual/en/apcu.configuration.php#ini.apcu.enable-cli