• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • Memcache::delete()

    (PECL memcache >= 0.2.0)

    从服务端删除一个元素

    说明

    Memcache::delete(string $key[,int $timeout= 0]): bool

    Memcache::delete()函数通过$key删除一个元素。如果参数$timeout指定,该元素会在$timeout秒后失效。同样也可以使用memcache_delete()函数完成同样功能。

    参数

    $key

    要删除的元素的key。

    $timeout

    删除该元素的执行时间。如果值为0,则该元素立即删除,如果值为30,元素会在30秒内被删除。

    更新日志

    版本说明
    Unknown It's not recommended to use the$timeoutparameter. The behavior differs between memcached versions, but setting to0is safe. Other values for this deprecated feature may cause the memcache delete to fail.

    返回值

    成功时返回TRUE,或者在失败时返回FALSE

    范例

    Example #1 Memcache::delete() example

    <?php
    /* procedural API */
    $memcache_obj = memcache_connect('memcache_host', 11211);
    /* 10秒后key_to_delete对应的值会被从服务端删除 */
    memcache_delete($memcache_obj, 'key_to_delete', 10);
    /* OO API */
    $memcache_obj = new Memcache;
    $memcache_obj->connect('memcache_host', 11211);
    $memcache_obj->delete('key_to_delete', 10);
    ?>
    

    参见

    • Memcache::set() Store data at the server
    • Memcache::replace() 替换已经存在的元素的值
    the Memcache::delete(key) function is broken on several combinations of memcached+pecl-memcache combinations. 
    pecl-memcache 2.2.5 + memcached 1.4.2 - Memcache::delete(key) WORKS
    pecl-memcache 2.2.5 + memcached 1.4.3 - Memcache::delete(key) DOES NOT WORK
    pecl-memcache 2.2.5 + memcached 1.4.4 - Memcache::delete(key) WORKS
    pecl-memcache 2.2.5 + memcached 1.4.5 - Memcache::delete(key) WORKS
    pecl-memcache 3.0.4 + memcached 1.4.2 - Memcache::delete(key) WORKS
    pecl-memcache 3.0.4 + memcached 1.4.3 - Memcache::delete(key) DOES NOT WORK
    pecl-memcache 3.0.4 + memcached 1.4.4 - Memcache::delete(key) DOES NOT WORK
    pecl-memcache 3.0.4 + memcached 1.4.5 - Memcache::delete(key) DOES NOT WORK
    According to the documents, $timeout is not required, but for me if I did not include it regardless of value, it fired an error. I made a simple fix for it.
    <?php
    class memcache_tools extends memcache
    {
      public function delete($key, $expire=0)
      {
        parent::delete($key, $expire);  
      }
    }
    ?>
    This will force it to behave as it should regardless of version.
    I could not get the delete to work properly, so I ended up trying the 'set' method and setting the timeout value to -1.
    <?php
    $memcache->set('index', 'deleted', 0, -1);
    ?>
    It solved my problem with the delete method.
    (using memcached 1.4.5 and pecl-memcache 3.0.6)
    In my case this code does NOT work:
    <?php
    $memcache->set('index', 'deleted', 0, -1);
    ?>
    because of expire == -1.
    I set expire = 1 (and I prefer "replace"):
    <?php
    $memcache->replace('index', '', 0, 1);
    ?>
    
    Regardless of whether or not it succeeds, for me on Ubuntu 10.04 it always returns false. Just an FYI, you can't seem to rely on the result.