查詢

Memcached::getDelayed()函式—用法及示例

「 從Memcached伺服器非同步獲取多個鍵對應的值 」


函式:Memcached::getDelayed()

適用版本:PHP 5 >= 5.3.0, PHP 7

用法:Memcached::getDelayed() 函式用於從Memcached伺服器非同步獲取多個鍵對應的值。與 Memcached::get() 不同的是,getDelayed() 函式不會阻塞指令碼執行,而是立即返回一個結果集物件,可以透過該物件獲取非同步獲取的資料。

語法:public Memcached::getDelayed ( array $keys [, bool &$cas_token [, callable $value_cb [, int $flags ]]] ) : bool

引數:

  • keys: 必需,一個包含多個鍵名的陣列,用於指定要從Memcached伺服器獲取值的鍵。
  • cas_token: 可選,一個引用型別的變數,用於儲存每個鍵對應的CAS標記(用於樂觀鎖機制)。
  • value_cb: 可選,一個回撥函式,用於處理獲取到的每個鍵對應的值。該函式接受兩個引數:鍵名和值,可以在該函式中對值進行處理。
  • flags: 可選,一個整數,用於指定一些選項。

返回值:如果成功啟動了非同步獲取操作,則返回 true;否則返回 false。

示例:

$memcached = new Memcached();
$memcached->addServer('localhost', 11211);

$keys = array('key1', 'key2', 'key3');
$casTokens = array();

$result = $memcached->getDelayed($keys, $casTokens);

if ($result) {
    // 非同步獲取操作已經啟動,可以進行其他操作

    // 處理獲取到的每個鍵對應的值
    $valueCallback = function ($key, $value) {
        echo "Key: $key, Value: $value\n";
    };

    // 獲取非同步獲取操作的結果集物件
    $resultObj = $memcached->fetchAll();

    // 遍歷結果集物件,處理每個鍵對應的值
    while ($resultObj->next()) {
        $resultObj->get($key, $value);
        $valueCallback($key, $value);
    }
} else {
    echo "Failed to start async get operation\n";
}

以上示例中,我們首先例項化了一個 Memcached 物件,並新增了一個 Memcached 伺服器。然後,我們定義了要非同步獲取的鍵名陣列 $keys,並將其傳遞給 getDelayed() 函式。函式返回 true 表示非同步獲取操作已經啟動,我們可以繼續執行其他操作。

在示例中,我們定義了一個回撥函式 $valueCallback,用於處理獲取到的每個鍵對應的值。然後,我們透過呼叫 $memcached->fetchAll() 方法獲取非同步獲取操作的結果集物件 $resultObj

接下來,我們使用 while 迴圈遍歷結果集物件 $resultObj,並透過呼叫 $resultObj->get() 方法獲取每個鍵對應的值。然後,我們呼叫回撥函式 $valueCallback 處理獲取到的鍵值對。

注意:在實際使用中,我們可以根據需求對回撥函式進行自定義,以滿足具體的業務邏輯。

補充糾錯
下一個函式: Memcached::getByKey()函式
熱門PHP函式
分享連結