$time_start = microtime_float(); $CNT = 200; $mode = 'mg'; if ('s' == $mode) { for ($i = 0; $i < $CNT; $i++) { if (mt_rand(0, 1)) { $cnt = new Counter('AnySlot', $i); echo '<h2>' . $cnt->increment() . '</h2>'; } } } if ('g' == $mode) { $rez = array(); for ($i = 1; $i <= $CNT; $i++) { $cnt = new Counter('AnySlot', $i); $rez[$i] = $cnt->get(); } echo "<hr><pre>"; var_export($rez); echo '</pre><hr>'; } if ('mg' == $mode) { $keys = array_keys(array_fill(1, $CNT, 1)); echo "<hr><pre>"; var_export(Counter::mget('AnySlot', $keys)); //var_export( Counter::mget('AnySlot',$keys, TRUE) ); echo '</pre><hr>'; } //; //$cnt->set_updelim(0); //echo '<h2>'.$cnt->get().'</h2>';
<?php echo '<hr>memory_get_usage: ' . memory_get_usage() / 1024 . 'Κα<br>'; require './config/Counter.php'; require './src/class.counter.php'; require './src/class.memstore.php'; require './src/class.redis.php'; function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return (double) $usec + (double) $sec; } ################################################################################ $time_start = microtime_float(); $cnt = new Counter('AnySlot', 22); //$cnt->set_updelim(0); echo '<h2>$cnt->get() = ' . $cnt->get() . '</h2>'; //echo '<h2>$cnt->del() = '.(int)$cnt->del().'</h2>'; echo '<h2>$cnt->increment() = ' . $cnt->increment() . '</h2>'; //echo '<h2>'.$cnt->get().'</h2>'; //echo $cnt->set(11); echo '<hr>memory get: ' . memory_get_usage() / 1024 . 'Κα<br>'; echo '<hr>memory peak: ' . memory_get_peak_usage() / 1024 . 'Κα<br>'; echo '<hr>time: ' . (microtime_float() - $time_start) * 1000 . ' ms<br>';
<?php require_once './Counter.php'; $counter = new Counter(); $counter->increment(); $cnt = $counter->get(); ?> <html> <head> <title>PHP講座 - トップページ</title> </head> <body> <h1>PHP講座</h1> <p>あなたは<?php echo $cnt; ?> 番目の訪問者です</p> </body> </html>
<?php require '../views/head.part.php'; ?> <h1> SHOW ME </h1> <?php $counters = new Counter(); $c = $counters->get($_GET['id']); ?> <h2><?php echo $c->name; ?> : <span class="herecomethenumber<?php echo $c->id; ?> "><?php echo $c->count; ?> </span></h2> <button class="ui green button" counter-id="<?php echo $c->id; ?> ">+1</button></br></br> <?php require '../views/footer.part.php';
<?php require 'head.part.php'; $C = new Counter(); $counter = $C->get($_GET['id']); ?> <h2>kroko=<?php echo $counter->name; ?> : <span id="herecomethenumber"><?php echo $counter->count; ?> </span></h2> <button counter-id="<?php echo $counter->id; ?> ">+</button> <?php require 'foot.part.php';
static function mget($SlotName, $keys, $fillZero = false) { $pf = crc32(self::NAME_SPACE . $SlotName) + 4294967296.0 . '#'; $rez = $fillZero ? array_fill_keys($keys, 0) : array(); $keys = array_combine($keys, array_map(function ($id) use($pf) { return $pf . $id; }, $keys)); $reKeys = array_flip($keys); $SlotClName = 'Counter_Slot_' . $SlotName; $memstore = $SlotClName::memstore(); foreach ($memstore->get($keys) as $k => $v) { $rez[$reKeys[$k]] = $v; } if (!$fillZero) { $diffKeys = array_diff_key($keys, $rez); if (count($diffKeys) && is_subclass_of($SlotClName, 'Counter_Slot_Multi_Interface')) { # Если mget для слота задан, то получаем оптом $expire = $SlotClName::expire(); foreach ($SlotClName::mget(array_keys($diffKeys)) as $k => $v) { $rez[$k] = $v; $memstore->add($keys[$k], $v, $expire); } } else { # Если mget для слота не задан, то получаем по одному foreach ($diffKeys as $k => $v) { $cnt = new Counter($SlotName, $k); $rez[$k] = $cnt->get(); } } } return $rez; }