0

ここで少し問題があります..紹介させてください...

ショートコードを作成するスクリプトがあります..ここにスクリプトがあります..

//shortcode stock
function stok($atts, $content = null) {  
    extract(shortcode_atts(array(  
        "id" => 'http://net.tutsplus.com'  
    ), $atts));  
    $result = mysql_query("SELECT SUM(quantity) AS value_sum FROM wp_wpsc_cart_contents WHERE prodid = '".$id."'"); 
    $row = mysql_fetch_assoc($result); 
    $stock = '<center><br><b>STOK TERJUAL :</b><div class="nscountdown"><table><thead><tr><td>'.$row['value_sum'].'</td></tr></thead></table></div></center>';
    return $stock;
}  
add_shortcode("stok", "stok");  

ご覧のとおり、列を合計するクエリがあります

$result = mysql_query("SELECT SUM(quantity) AS value_sum FROM wp_wpsc_cart_contents WHERE prodid = '".$id."'"); 

いや..問題は..結果をキャッシュする方法です。そのクエリにより、サーバーの負荷平均が急上昇するためです...

解決策はありますか??

前にありがとう....

4

1 に答える 1

0

おそらくTransient APIが必要です。

function stok($atts, $content = null) {  
    extract(shortcode_atts(array(  
        "id" => 'http://net.tutsplus.com'  
    ), $atts));  

    if ( false === ( $query_cache = get_transient( md5($id) ) ) ) {
        $result = mysql_query("SELECT SUM(quantity) AS value_sum FROM wp_wpsc_cart_contents WHERE prodid = '".$id."'"); 
        $row = mysql_fetch_assoc($result); 
        $stock = '<center><br><b>STOK TERJUAL :</b><div class="nscountdown"><table><thead><tr><td>'.$row['value_sum'].'</td></tr></thead></table></div></center>';

        // set one hour lifetime cache with the name of md5($id)
        set_transient( md5($id), $stock, 60*60*1 );     
        return $stock;
    }
    return $query_cache;
}  
add_shortcode("stok", "stok");  
于 2012-09-19T02:49:12.920 に答える