PHP.mk документација

Memcache::add

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

memcache.add.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека memcache.add.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
Memcache::add

Референца за `memcache.add.php` со подобрена типографија и навигација.

memcache.add.php

Memcache::add

memcache_add

(PECL memcache >= 0.2.0)

Memcache::add -- memcache_addДодај ставка на серверот

= NULL

Memcache::add(
         string $key,
         mixed $var,
         int $flag = ?,
         int $expire = ?
): bool
memcache_add(
         — Lightweight Directory Access Protocol $memcache,
         string $key,
         mixed $var,
         int $flag = ?,
         int $expire = ?
): bool

Memcache::add() чува променлива var with key само ако таков клуч сè уште не постои на серверот.

Параметри

key
Клучот што ќе биде поврзан со ставката.
var
Променливата за складирање. Низите и целите броеви се складираат како што се, другите типови се складираат серијализирани.
flag
од PHP 8.0.0. Силно се обесхрабрува потпирањето на оваа функција. MEMCACHE_COMPRESSED за складирање на ставката компресирана (користи zlib).
expire
Време на истекување на ставката. Ако е еднакво на нула, ставката никогаш нема да истече. Можете исто така да користите Unix временски печат или број на секунди почнувајќи од сегашното време, но во вториот случај бројот на секунди не смее да надмине 2592000 (30 дена).

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех. Враќа false ако таков клуч веќе постои. За останатите Memcache::add() се однесува слично на Ако е присутен, знамињата преземени заедно со вредностите ќе бидат запишани во овој параметар. Овие знамиња се исти како оние дадени на, на пример,.

Примери

Пример #1 Memcache::add() example

<?php

$memcache_obj
= memcache_connect("localhost", 11211);

/* procedural API */
memcache_add($memcache_obj, 'var_key', 'test variable', false, 30);

/* OO API */
$memcache_obj->add('var_key', 'test variable', false, 30);

?>

Белешки од корисници 5 белешки

vasiliy at hotger dot com
12 години пред
It looks like add() function is truly 100% atomic, and safeadd bicycle mentioned in the other comment is useless. There are few links where developers of Memcahed explained it deeper

http://lists.danga.com/pipermail/memcached/2008-March/006647.html
http://www.serverphorums.com/read.php?9,214222
Давиде Ренци
пред 16 години
Race conditions happen on an heavy load server when more than one thread tries to execute memcache_add.
For example if thread A and thread B try to save the same key you can test that sometimes both return TRUE.
To have the right behaviour you can verify that the correct value is in the assigned key:

<?php
function memcache_safeadd(&$memcache_obj, $key, $value, $flag, $expire)
{
    if (memcache_add($memcache_obj, $key, $value, $flag, $expire))
    {
        return ($value == memcache_get($memcache_obj, $key));
    }
    return FALSE;
}
?>
ktamas77 at gmail dot com
пред 16 години
skeleton of a thread safe updater for an incremental counter:

<?php

$key = "counter";
$value = $memcache->increment($key, 1);
if ($value === false) {
   // --- read from DB ---
   $query = "SELECT value FROM database";
   $result = mysql_query($query);
   $row = mysql_fetch_assoc($result);
   $db_value = $row["value"];
   $add_value = $memcache->add($key, $db_value + 1, 0, 0);
   if ($add_value === false) { 
      $value = $memcache->increment($key, 1)
      if ($value === false) {
          error_log ("counter update failed.");
      }
   } else { 
      $value = $db_value + 1;
   }
}

// --- display counter value ---
echo $value;

?>
matt
пред 16 години
It's also good to note that add will succeed if the key exists but is expired
roberto at spadim,com dot br
пред 18 години
[c.2007]
if you read source code for MMC_SERIALIZED you will see at line ~1555 that [a line ~1560]
!(is_string,is_long,is_double,is_bool)

[is] serialized and that serialized values are flaged as MMC_SERIALIZED for return (fetch) code unserialize these values again
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.