本文整理汇总了PHP中shm_get_var函数的典型用法代码示例。如果您正苦于以下问题:PHP shm_get_var函数的具体用法?PHP shm_get_var怎么用?PHP shm_get_var使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了shm_get_var函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get
/**
* @param integer $key_
*
* @return mixed
*/
public function get($key_)
{
if (false === shm_has_var($this->m_segment, $key_)) {
return null;
}
return shm_get_var($this->m_segment, $key_);
}
示例2: fetch
/**
* Fetches an entry from the cache.
*
* @param string $id cache id The id of the cache entry to fetch.
* @return mixed The cached data or FALSE, if no cache entry exists for the given id.
*/
public function fetch($id)
{
if ($this->contains($id)) {
return shm_get_var($this->shmId, $this->forgeKey($id));
}
return false;
}
示例3: read
public function read($key)
{
if ($this->shmId) {
return @shm_get_var($this->shmId, $key);
}
return false;
}
示例4: generate
/**
* @return IdValue
*/
public function generate()
{
$timestamp = $this->generateTimestamp();
// Acquire semaphore
$semaphore = sem_get($this->semaphoreId);
sem_acquire($semaphore);
// Attach shared memory
$memory = shm_attach(self::SHM_KEY);
$sequence = 0;
if (!is_null($this->lastTimestamp) && $timestamp->equals($this->lastTimestamp)) {
// Get
$sequence = shm_get_var($memory, self::SHM_SEQUENCE) + 1 & $this->config->getSequenceMask();
// Increment sequence
shm_put_var($memory, self::SHM_SEQUENCE, $sequence);
if ($sequence === 0) {
usleep(1000);
$timestamp = $this->generateTimestamp();
}
} else {
// Reset sequence if timestamp is different from last one.
$sequence = 0;
shm_put_var($memory, self::SHM_SEQUENCE, $sequence);
}
// Detach shared memory
shm_detach($memory);
// Release semaphore
sem_release($semaphore);
// Update lastTimestamp
$this->lastTimestamp = $timestamp;
return new IdValue($timestamp, $this->regionId, $this->serverId, $sequence, $this->calculate($timestamp, $this->regionId, $this->serverId, $sequence));
}
示例5: _get
/**
* Private helper function
*
* @return var data
*/
protected function _get()
{
$h = shm_attach($this->spot);
$data = shm_get_var($h, $this->name);
shm_detach($h);
return is_array($data) ? $data : false;
}
示例6: set
public function set($key, $value, $no_cas = false)
{
if (!$this->isOpen()) {
$this->open();
}
$this->enterCriticalSection($this->ipckey);
$this->debug("SHM set: {$key} = {$value}");
$key = strtolower($key);
$idx = $this->props[$key];
if (!$no_cas && shm_has_var($this->shm, $idx) && !empty($this->hashes[$key])) {
$var = shm_get_var($this->shm, $idx);
$check = md5($var);
if ($this->hashes[$key] == $check) {
$this->debug("CAS check: Key not modified: {$key}");
shm_put_var($this->shm, $idx, $value);
$ok = true;
} else {
$this->debug("CAS check: Key modified, write blocked: {$key}");
$ok = false;
}
} else {
$this->debug("CAS check: Check disabled for set: {$key}");
$ok = true;
shm_put_var($this->shm, $idx, $value);
}
if ($ok) {
$hash = md5($value);
$this->hashes[$key] = $hash;
$this->debug("CAS hash for {$key} is now {$hash}");
}
$this->leaveCriticalSection();
return $ok;
}
示例7: retrieve
public static function retrieve($key)
{
self::getHandle();
$data = shm_get_var(self::$handle, self::getVarKey($key));
self::release();
return $data;
}
示例8: getNextValueByShareMemory
/**
* 通过本机共享内存件来生成一个auto_increment序列
*
* 序列类似MySQL的auto_increment
*
* @access private
* @param void
* @return mixed
*/
function getNextValueByShareMemory()
{
$addr = '127.0.0.1';
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$addr = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (!empty($_SERVER['SERVER_ADDR'])) {
$addr = $_SERVER['SERVER_ADDR'];
}
$skey = 'global_serial_generator_seed_' . $addr;
$ikey = crc32($skey);
$sem = $shm = null;
$retry_times = 1;
do {
$sem = sem_get($ikey, 1, 0777);
$shm = shm_attach($ikey, 128, 0777);
if (is_resource($sem) && is_resource($shm)) {
break;
}
$cmd = "ipcrm -M 0x00000000; ipcrm -S 0x00000000; ipcrm -M {$ikey} ; ipcrm -S {$ikey}";
$last_line = exec($cmd, $output, $retval);
} while ($retry_times-- > 0);
if (!sem_acquire($sem)) {
return false;
}
$next_value = false;
if (shm_has_var($shm, $ikey)) {
shm_put_var($shm, $ikey, $next_value = shm_get_var($shm, $ikey) + 1);
} else {
shm_put_var($shm, $ikey, $next_value = 1);
}
$shm && shm_detach($shm);
$sem && sem_release($sem);
return $next_value;
}
示例9: Map2GE
function Map2GE($x, $y)
{
if (0) {
$SHM_KEY = ftok(__FILE__, chr(4));
$data = shm_attach($SHM_KEY, 102400, 0666);
$result = shm_get_var($data, 1);
$r = $result[$x][$y];
if (isset($r)) {
shm_detach($data);
return $r;
}
}
// ×¥¿
$r = t67to97($x, $y);
$x = $r[0];
$y = $r[1];
$proj = "proj -I +proj=tmerc +ellps=aust_SA +lon_0=121 +x_0=250000 +k=0.9999";
$ret = shell_exec("echo {$x} {$y} | {$proj}");
if (preg_match("/(\\d+)d(\\d+)'([\\d.]+)\"E\\s+(\\d+)d(\\d+)'([\\d.]+)\"N/", $ret, $matches)) {
list($junk, $ed, $em, $es, $nd, $nm, $ns) = $matches;
$r[0] = $ed + $em / 60 + $es / 3600;
$r[1] = $nd + $nm / 60 + $ns / 3600;
if (0) {
$result[$x][$y] = $r;
shm_put_var($data, 1, $result);
shm_detach($data);
}
return $r;
}
return FALSE;
// exit;
}
示例10: DUMP
public function DUMP()
{
if (!$this->ok) {
return array();
}
$data = @shm_get_var($this->shmid, $this->index);
return $data;
}
示例11: __get
public function __get($k)
{
$key = crc32($k);
if (!shm_has_var($this->sharedMemoryId, $key)) {
return null;
}
return shm_get_var($this->sharedMemoryId, $key);
}
示例12: __get
public function __get($var)
{
if (shm_has_var($this->fsh, $var)) {
return shm_get_var($this->fsh, $var);
} else {
return null;
}
}
示例13: execute
/**
* Execution commands.
* @param InputInterface $input
* @param OutputInterface $output
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
if (is_null(Config::$sharedId) == false && @shm_has_var(Config::$sharedId, Config::STATUS)) {
$output->writeln('<info>' . shm_get_var(Config::$sharedId, Config::STATUS) . '</info>');
} else {
$output->writeln('<comment>' . Config::NAME . ' not running</comment>');
}
}
示例14: get
/**
* @param $key
* @param int $size
* @return mixed
*/
public function get($key, $size = 10000)
{
$result = $this->attach($key, $size);
sem_acquire($result['mutex']);
$value = @shm_get_var($result['shm'], $key);
sem_release($result['mutex']);
return $value;
}
示例15: __get
public function __get($name)
{
$name = $this->intkey($name);
if (shm_has_var($this->ipc, $name)) {
return shm_get_var($this->ipc, $name);
}
return NULL;
}