Saltar al contenido

Almacenamiento en caché de consultas en PHP para el rendimiento de mySQL

Solución:

Básicamente, necesita almacenar en caché la consulta:

 # After: [with memcache]
    $rSlowQuery = mysql_query_cache($sql);
    # $rSlowQuery is an array
    $rows = count($rSlowQuery);
    for ($i=0;$i<$rows;$i++) { }

Reducir las llamadas a la base de datos
Consulte phpFastCache que admite WinCache, MemCache, Files, X-Cache, APC Cache. Es simple para principiantes

Clase de almacenamiento en caché PHP para base de datos: su sitio web tiene 10,000 visitantes que están en línea, y su página dinámica debe enviar 10,000 consultas iguales a la base de datos en cada carga de página. Con phpFastCache, su página solo envía 1 consulta a DB y usa la caché para atender a otros 9,999 visitantes.

<?php
    // In your config file
    include("php_fast_cache.php");
    // This is Optional Config only. You can skip these lines.
    // phpFastCache support "apc", "memcache", "memcached", "wincache" ,"files", "pdo", "mpdo" and "xcache"
    // You don't need to change your code when you change your caching system. Or simple keep it auto
    phpFastCache::$storage = "auto";
    // End Optionals

    // In your Class, Functions, PHP Pages
    // try to get from Cache first.
    $products = phpFastCache::get("products_page");

    if($products == null) {
        $products = YOUR DB QUERIES || GET_PRODUCTS_FUNCTION;
        // set products in to cache in 600 seconds = 10 minutes
        phpFastCache::set("products_page",$products,600);
    }

    foreach($products as $product) {
        // Output Your Contents HERE
    }
?>

Recientemente me encontré con un problema similar, y así es como lo resolví …


Paso 1: Agrega un .user.ini archivo a la raíz de su proyecto (si aún no tiene uno), y las siguientes directivas al archivo para habilitar el mysqlnd_qc plugin y establezca un TTL para el caché:

; Enables MySQL query caching by PHP
mysqlnd_qc.enable_qc = 1

; Set a default TTL for the caching in seconds
mysqlnd_qc.ttl = 30

Paso 2: Agregue una sugerencia SQL antes de cualquier consulta que desee que mysqlnd_qc almacene en caché.

Aquí está la sugerencia que debe agregarse a la consulta:

"/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" .

Aquí tienes un ejemplo de uso:

$res = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT id FROM test WHERE id = 1");

¡Deberias hacer eso! También puede almacenar en caché todas las consultas utilizando el mysqlnd_qc.cache_no_table = 1 directiva.

Todo esto proviene de la documentación de PHP, aquí: http://php.net/manual/en/mysqlnd-qc.quickstart.caching.php

¡Espero que eso ayude!

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *