Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Prinsip dan senario aplikasi cache pembangunan PHP

Prinsip dan senario aplikasi cache pembangunan PHP

WBOY
WBOYasal
2023-11-08 13:26:001311semak imbas

Prinsip dan senario aplikasi cache pembangunan PHP

Prinsip dan senario aplikasi caching pembangunan PHP memerlukan contoh kod khusus

Dengan perkembangan teknologi Internet, PHP telah digunakan secara meluas Salah satu bahasa pembangunan. Dalam pembangunan PHP, penggunaan cache adalah teknologi pengoptimuman biasa, yang boleh mengurangkan bilangan pertanyaan pangkalan data, memendekkan masa tindak balas, dan meningkatkan prestasi aplikasi.

Prinsip Caching

Cache ialah teknologi yang menyimpan data dalam ingatan, mengurangkan akses kepada storan luaran seperti cakera atau pangkalan data, dengan itu meningkatkan prestasi aplikasi.

Prinsip asas caching ialah membaca data daripada storan luaran (seperti pangkalan data atau sistem fail) dan menyimpannya dalam ingatan. Pada kali berikutnya data diperlukan, ia boleh dibaca terus dari memori, mengelakkan operasi IO yang kerap pada cakera atau pangkalan data.

Memandangkan kelajuan baca dan tulis memori jauh lebih pantas daripada peranti storan seperti cakera atau pangkalan data, penggunaan teknologi caching boleh meningkatkan kelajuan akses dan masa tindak balas dengan ketara.

Senario aplikasi

Dalam aplikasi sebenar, cache boleh digunakan untuk membaca sejumlah besar data dan mengulangi pertanyaan, yang boleh meningkatkan kelajuan tindak balas dan mengurangkan kependaman. Beberapa senario aplikasi biasa diperkenalkan di bawah.

1. Cache data popular

Data popular merujuk kepada data yang sering ditanya, seperti halaman utama tapak web, halaman kategori, dsb. Data ini biasanya tidak banyak berubah, dan pertanyaan diulang berkali-kali. Jadi menyimpannya dalam memori boleh menjimatkan banyak masa pertanyaan pangkalan data dan masa IO rangkaian.

Sebagai contoh, berikut ialah contoh kod PHP yang menanyakan tapak popular melalui cache:

function getPopularSites() {
    // 先尝试从缓存中读取数据
    $cache = new Memcache();
    $cache->connect('localhost', 11211);
    $data = $cache->get('popular_sites');

    if (empty($data)) {
        // 如果没有缓存,则从数据库中查询数据
        $conn = new mysqli('localhost', 'user', 'password', 'my_db');
        $result = $conn->query('SELECT * FROM sites WHERE visits > 1000');
        $data = $result->fetch_all(MYSQLI_ASSOC);

        // 将数据存储到缓存中
        $cache->set('popular_sites', $data, 0, 3600);
    }

    return $data;
}

Fungsi ini mula-mula cuba membaca data daripada cache data tiada dalam cache, Data disoal dari pangkalan data dan disimpan dalam cache. Cache ditetapkan dengan masa tamat tempoh 3600 saat Selepas tamat tempoh, data akan disoal semula daripada pangkalan data.

2. Cache data sesi

Dalam aplikasi PHP, data sesi (Sesi) ialah data pengguna yang disimpan di bahagian pelayan Setiap kali permintaan dibuat, pelayan mesti dapatkannya dari cakera Baca data pengguna. Jika aplikasi mempunyai bilangan pengguna yang ramai, data sesi pertanyaan akan menjadi kesesakan prestasi pelayan.

Untuk mempercepatkan pembacaan data sesi, data sesi boleh dicache dalam ingatan, seperti menggunakan alat caching seperti Memcache, supaya data sesi boleh dibaca dari memori setiap kali ia diminta, tanpa perlu Semua ditanya dari cakera.

Sebagai contoh, berikut ialah contoh kod PHP yang menggunakan Memcache untuk cache data sesi:

session_start();

function getSessionData($key) {
    // 先尝试从缓存中读取数据
    $cache = new Memcache();
    $cache->connect('localhost', 11211);
    $data = $cache->get(session_id() . '_' . $key);

    if (empty($data)) {
        // 如果缓存中没有该数据,则从会话中读取
        $data = $_SESSION[$key];

        // 将数据存储到缓存中
        $cache->set(session_id() . '_' . $key, $data, 0, 3600);
    }

    return $data;
}

function setSessionData($key, $value) {
    // 将数据存储到缓存和会话中
    $cache = new Memcache();
    $cache->connect('localhost', 11211);
    $cache->set(session_id() . '_' . $key, $value, 0, 3600);
    $_SESSION[$key] = $value;
}

Kod di atas menggunakan session_id() dan $key sebagai nilai kunci cache . Jika ia berada dalam cache Jika data tidak wujud, ia dibaca daripada tatasusunan $_SESSION dan disimpan dalam cache. Apabila data berubah, data dalam cache dan tatasusunan $_SESSION juga akan dikemas kini pada masa yang sama.

3. Caching hasil pengiraan data

Dalam sesetengah aplikasi yang memerlukan pengiraan yang kerap, keputusan pengiraan boleh dicache untuk mengelakkan pengiraan berulang. Contohnya, data paging, pengiraan harga komoditi, dsb. Pengiraan ini agak rumit, tetapi dalam penggunaan sebenar, parameter input yang sama mungkin akan berulang kali dikira dalam tempoh masa yang berbeza, jadi penggunaan teknologi caching boleh meningkatkan kecekapan pengiraan.

Sebagai contoh, berikut ialah contoh kod PHP yang menggunakan cache APC untuk mengira hasil pendaraban:

function multiply($a, $b) {
    // 先尝试从缓存中读取乘法结果
    $result = apc_fetch(sprintf('multiply_%d_%d', $a, $b), $success);

    if (!$success) {
        // 如果缓存中没有结果,则进行乘法计算
        $result = $a * $b;

        // 将计算结果存储到缓存中
        apc_add(sprintf('multiply_%d_%d', $a, $b), $result, 3600);
    }

    return $result;
}

Fungsi ini menggunakan parameter panggilan $a dan $b sebagai kunci nilai untuk caching Jika tiada data dalam cache, pengiraan pendaraban dilakukan dan hasil pengiraan disimpan dalam cache. Setiap kali fungsi dipanggil, percubaan dibuat untuk membaca hasil daripada cache untuk mengelakkan pengiraan berganda.

Ringkasan

Caching ialah teknik pengoptimuman yang mudah dan berkesan yang boleh meningkatkan prestasi dan tindak balas aplikasi dengan sangat baik. Dalam pembangunan PHP, penggunaan teknologi caching yang betul boleh mengurangkan bilangan pertanyaan pangkalan data, memendekkan masa tindak balas dan meningkatkan pengalaman pengguna.

Dalam aplikasi sebenar, anda boleh memilih alatan caching dan strategi caching yang berbeza mengikut keperluan perniagaan, seperti Memcache, APC dan alatan caching memori lain untuk mengoptimumkan aplikasi dengan menyimpan data popular, data sesi, hasil pengiraan, dan lain-lain tujuan prestasi.

Di atas ialah pengenalan kepada prinsip dan senario aplikasi cache pembangunan PHP. Ia juga menyediakan beberapa contoh kod khusus, dengan harapan dapat membantu pembangun PHP.

Atas ialah kandungan terperinci Prinsip dan senario aplikasi cache pembangunan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn