示例#1
0
 public function updateUserAction($yacPrefix, $key)
 {
     $yac = new Yac($yacPrefix);
     $ret = $yac->get($key);
     // Q: Does ttl expired key flushed or not?
     $user = new User();
     $user->name = $ret['param']['name'];
     $user->department = $ret['param']['department'];
     $success = $user->save();
     if ($success) {
         unset($user);
         // echo "Thanks for registering!\r\n";
     } else {
         echo "Sorry, {$yacPrefix}:::::::{$key} \r\n";
         foreach ($user->getMessages() as $message) {
             echo $message->getMessage(), "\r\n";
         }
     }
     if (!$ret) {
         var_export(array($key, $ret));
         echo "\r\n";
     }
     $yac->delete($key);
     return true;
     // $arr = unserialize($ret);
     // return array("heihei"=>$ret,"ret2"=>$ret2);
 }
示例#2
0
 public function get_recommend()
 {
     $result = [];
     //从php.ini获取是否使用yac
     //empty: 不是null且不是0
     if (!empty(ini_get('yac.enable'))) {
         $yac = new Yac("zw");
         $recommended = $yac->get("recommended_articles");
         if (empty($recommended)) {
             $recommended = $this->article->get_recommended_articles();
             $yac->set("recommended_articles", $recommended);
         }
         $banner = $yac->get('banner');
         if (empty($banner)) {
             $banner = $this->article->get_banner_articles();
             $yac->set('banner', $banner);
         }
     } else {
         $recommended = $this->article->get_recommended_articles();
         $banner = $this->article->get_banner_articles();
     }
     $result['recommend'] = $recommended;
     $result['banner'] = $banner;
     header("Access-Control-Allow-Origin: *");
     $this->output->set_content_type('application/json');
     $this->output->set_output(json_encode($result));
 }
示例#3
0
 public function autoAction()
 {
     //注意:需要安装yac扩展,用于存储共享变量,下面的实例作为高并发计数器
     $yac = new Yac();
     $count = $yac->get('zqf');
     if (!$count) {
         $yac->set('zqf', 1);
     } else {
         $yac->set('zqf', $count + 0.5);
     }
     echo $count;
     exit;
 }
示例#4
0
 public function indexAction($yacPrefix, $key)
 {
     $yac = new Yac($yacPrefix);
     $ret = $yac->get($key);
     // Q: Does ttl expired key flushed or not?
     $ret2 = User::find()->toArray();
     // $arr = unserialize($ret);
     if (!$ret) {
         var_export(array($key, $ret));
         echo "\r\n";
     }
     $yac->delete($key);
     return array("heihei" => $ret2);
 }
 private function cacheGet($cache_key)
 {
     if (class_exists('Yac')) {
         $yac = new \Yac();
         $addr = $yac->get($cache_key);
         if (is_array($addr)) {
             return $addr;
         }
     } else {
         if (function_exists('apc_fetch')) {
             $addr = apc_fetch($cache_key);
             if (is_array($addr)) {
                 return $addr;
             }
         }
     }
     return null;
 }
示例#6
0
<?php

// MurmurHash :
// 双散列法 :
// 共享内存 :
//
$yac = new Yac();
for ($i = 0; $i < 1000; $i++) {
    $key = "xxx" . rand(1, 10000);
    $value = str_repeat("x", rand(1, 10000));
    if (!$yac->set($key, $value)) {
        var_dump("write " . $i);
    }
    if ($value != ($new = $yac->get($key))) {
        var_dump("read " . $i);
    }
}
var_dump($i);
示例#7
0
 public static function getData($key)
 {
     $yac = new Yac();
     $result = $yac->get($key);
     return $result;
 }
示例#8
0
<?php

/* 
 * we used the following set:
 * yac.keys_memory_size => 128M => 128M
 * yac.values_memory_size => 1G => 1G
 * and put this under document root, run with ab -c 100
 */
$loop_count = 100;
$yac = new Yac("yac_test");
for ($i = 0; $i < $loop_count; $i++) {
    $n = mt_rand(1, 100000000);
    $key = "key-" . $n;
    $value = array_fill(0, 100, $n);
    if (!$yac->set($key, $value)) {
        error_log("Set error: " . "key=" . $key);
    }
    $testvalue = $yac->get($key);
    if ($testvalue === false) {
        /* this is not error */
        error_log("yac warning: " . "key=" . $key . " Not_found\n");
    } else {
        if ($testvalue !== $value) {
            error_log("yac error: " . "key=" . $key . " Changed. <" . var_export($testvalue, 1) . "> should be <" . var_export($value, 1) . ">\n");
        }
    }
}