1

Memcached に少し問題があります。

私は以下のコードを持っています:

if(!$Z->get('user')) {
    $Z->set('user', $hs->load_hs_main($_GET['from'], $_GET['table']));
}

$je = $Z->get('user') ? $Z->get('user') : $hs->load_hs_main($_GET['from'], $_GET['table']);

とが本来あるべきものは$Z->get('user')$jeMySQLi の結果オブジェクトです。これにより、print_r が機能しないなどの奇妙な結果が生じ、正しく表示されません。

memcached によって作成されたオブジェクトが存在するかどうかを確認し、存在する場合はそれを使用したいのですが、存在しない場合は設定します。

4

2 に答える 2

3

アイテムが存在しない場合に、キャッシュからアイテムを取得するか、別の場所からアイテムを作成/ロードする正しい方法は次のとおりです。

$user = $Z->get('user'); // get it from cache, returns falsy value if not found
if(!$user) { // not found
    $user = $hs->load_hs_main(...); // load the element from somewhere else
    $Z->set('user', $user); // cache it
}
// here $user always exists
于 2012-07-01T10:56:31.080 に答える
1

一般に、「内部」クラスのオブジェクトを memcache に保存することはできません。これらのオブジェクトには、シリアル化できないデータが含まれています。結果オブジェクトからデータを取得し、それを PHP 配列に格納する必要があります。次に、その配列を memcache に格納できます。

于 2012-07-01T11:02:07.020 に答える