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); }
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)); }
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; }
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; }
<?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);
public static function getData($key) { $yac = new Yac(); $result = $yac->get($key); return $result; }
<?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"); } } }