PHP e SQLite Service in memoria

ho una singola pagina HTML reattivo. una sezione della pagina ha una ricerca di prodotti. l’utente può inserire criteri di ricerca in un modulo e ottenere indietro i risultati. i risultati sono pagati.

<form id="filterform" name="filterform" method="post" action="./loaddata.php">
   ...
</form>

il form è inviato da Ajax e i risultati vengono restituiti come un frammento HTML che viene inserito dinamicamente nel DOM per aggiornare i risultati.

questo è tutto OK, ma a volte i risultati da loaddata.php sono molto lenti, di solito la prima volta chiamato dalla pagina.

in loaddata.php Sto usando un database SQLite3. si legge solo. qualcosa come il seguente:

$filename = "../datafile.sqlite3";
$db = new SQLite3($filename);
$q = "SELECT distinct productId, title, price, name FROM datatable LIMIT 16";
$results = $db->query($q);
while ($row = $results->fetchArray()) {
    echo "<h1>Results</h1>";
}
$db->close();

c’è un modo per rendere loaddata.php carico e rimanere in memoria per rispondere al modulo presentare? sembra che si ricarica ogni presentare.

EN From: PHP and SQLite Service in Memory

More similar articles:

2 Comments

  1. sì, è, ma avresti bisogno di Redis o Memcache per questo, PHP stesso non può farlo perché non condivide la memoria tra le richieste tutto viene distrutto dopo la richiesta è servita. ma se avete intenzione di configurare Redis / Memchace penso che sarebbe più facile solo per migrare a MySQL. per questo tipo di query SQL di base, non avrete problemi di prestazioni con MySQL / MariaDB.

  2. a seconda delle dimensioni del datatable è possibile salvarlo su SESSION, utilizzare funzioni come shmop _ open / shmop _ write / shmop _ read o (meglio ancora) utilizzare un servizio di cache come redis, ma in un modo o nell’altro i dati saranno memorizzati ed elaborati ogni volta che si passa da quel luogo. vorrei tere la pagina in pezzi, creare un servizio web per affrontare il modulo post e un altro per mostrare il modulo.

    il modo più semplice (non necessario più sicuro o migliore da fare) sarebbe… PS: suppongo che si sta lavorando con DOP e (ovviamente) il codice qui sotto è un’elaborazione, in realtà non funzionerà

    if (isset($_SESSION['db_datatable'])) {
        foreach ($_SESSION['db_datatable'] AS $item) {
            echo "<h1>".$item['some_row']."</h1>";
        }
    } else {
        $filename = "../datafile.sqlite3";
        $db = new SQLite3($filename);
        $q = "SELECT distinct productId, title, price, name FROM datatable LIMIT 16";
        $results = $db->query($q);
        while ($row = $results->fetchArray()) {
            $_SESSION['db_datatable'][] = $row;
            echo "<h1>Results</h1>";
        }
        $db->close();
    }

    spero di essere stato di qualche aiuto. saluti!!

Leave a Reply

Your email address will not be published. Required fields are marked *