Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah php menggunakan caching?

Bagaimanakah php menggunakan caching?

WBOY
WBOYasal
2023-06-01 14:51:062284semak imbas

Sebagai bahasa pengaturcaraan sebelah pelayan yang popular, PHP selalunya perlu mengendalikan sejumlah besar data dan permintaan, jadi pengurusan cache yang cekap adalah penting untuk meningkatkan prestasi tapak web. Artikel ini akan memperkenalkan cara PHP menggunakan caching, termasuk prinsip asas caching, kaedah caching PHP sendiri dan perpustakaan caching popular yang lain.

1. Prinsip asas caching

Dalam pembangunan web, caching merujuk kepada menyimpan data yang kerap dibaca dalam medium capaian pantas untuk mengurangkan keperluan untuk mendapatkan data daripada pangkalan data atau sumber lain semasa setiap permintaan. Masa sumber membaca data. Apabila menggunakan cache, anda perlu terlebih dahulu menentukan sama ada data sudah wujud dalam cache. Jika ya, baca data secara langsung daripada cache. Jika tidak, baca dari pangkalan data atau sumber lain dan tambahkan data baca pada cache.

Kelebihan caching ialah ia boleh mengurangkan overhed sumber sistem dengan banyak dan meningkatkan prestasi dan kelajuan tindak balas tapak web. Walau bagaimanapun, caching juga mempunyai beberapa kelemahan Contohnya, untuk menukar data secara dinamik, caching boleh menyebabkan data tidak dikemas kini dalam masa, mengakibatkan ralat.

2. Kaedah caching PHP sendiri

Php menyediakan pelbagai kaedah caching, yang paling biasa digunakan ialah cache memori (Cache Memori) dan cache fail (Cache Fail).

1. Cache memori

Php menyediakan tiga kaedah cache memori, iaitu Memcached, APC dan XCache. Perpustakaan caching ini sangat berkesan apabila mengendalikan sejumlah besar data dan boleh menjadikan program PHP berjalan lebih pantas.

(1) Memcached

Memcached ialah sistem caching objek memori teragih yang biasa digunakan Ia berdasarkan perpustakaan rangkaian libevent dan boleh berkongsi data antara berbilang pelayan. Php boleh memanggil Memcached dengan mudah dengan memanjangkan perpustakaan kelas Memcache.

Kod contoh:

$mem = new Memcache;
$mem->connect("localhost", 11211);
$result = $mem->get("product_123");

if(!$result) {
  $result = '...'; // 从数据库或其他资源中读取数据
  $mem->set("product_123", $result, 3600);
}

echo $result;

(2) APC

APC ialah sistem caching objek memori yang dipanggil "Cache PHP Alternatif", yang boleh membantu PHP mencapai pembacaan dan pemprosesan Data yang pantas , dan mengurangkan beban pelayan. Php boleh memanggil APC dengan mudah dengan memanjangkan perpustakaan kelas APC.

Kod sampel:

$value = apc_fetch('variable_key');
if($value === false) {
    $value = '...'; // 从数据库或其他资源中读取数据
    apc_store('variable_key', $value, $ttl);
}
echo $value;

(3) XCache

Kelajuan pelaksanaan. Php boleh dipanggil dengan mudah dengan memanjangkan perpustakaan kelas XCache.

Kod contoh:

$value = xcache_get('variable_key');
if(!$value) {
    $value = '...'; // 从数据库或其他资源中读取数据
    xcache_set('variable_key', $value, $ttl);
}
echo $value;

2. Cache fail

Selain caching memori, Php juga menyediakan caching fail, yang boleh menyimpan data ke cakera keras tempatan. Kelebihan caching fail ialah data boleh disimpan untuk masa yang lama dan tidak akan menjadi tidak sah kerana pelayan dimulakan semula. Walau bagaimanapun, dalam keadaan konkurensi yang tinggi, caching fail mungkin menjadi halangan.

Kod contoh:

$cache_file = 'cache/product_123.cache';
if(file_exists($cache_file) && (time() - filemtime($cache_file) < 3600)) {
    $result = file_get_contents($cache_file);
} else {
    $result = '...'; // 从数据库或其他资源中读取数据
    file_put_contents($cache_file, $result);
}
echo $result;

3 Pustaka caching popular lain

Selain kaedah caching yang disertakan dengan PHP, terdapat juga banyak perpustakaan caching pihak ketiga yang boleh digunakan, seperti Redis, MongoDB dan Couchbase, dsb. Perpustakaan caching ini biasanya menyediakan perpustakaan pelanggan yang boleh disepadukan dengan mudah dengan Php.

1.Redis

Redis ialah sistem storan berkelajuan tinggi dan sistem cache berkelajuan tinggi yang menyokong pelbagai struktur data, termasuk rentetan, senarai, set dan set tersusun dan hash dll.

Kod sampel:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$result = $redis->get('product_123');
if(!$result) {
  $result = '...'; // 从数据库或其他资源中读取数据
  $redis->setex('product_123', 3600, $result);
}
echo $result;

2.MongoDB

MongoDB ialah pangkalan data dokumen yang menyokong berbilang format storan, termasuk JSON dan BSON. Php boleh memanggil MongoDB dengan mudah melalui perpustakaan kelas sambungan rasmi MongoDB.

Kod sampel:

$m = new MongoClient();
$db = $m->test;
$collection = $db->products;
$result = $collection->findOne(array('id' => '123'));
if(!$result) {
  $result = '...'; // 从数据库或其他资源中读取数据
  $collection->insert(array('id' => '123', 'data' => $result));
} else {
  $result = $result['data'];
}
echo $result;

3.Couchbase

Couchbase ialah sistem storan nilai kunci teragih berasaskan memori yang menyokong serpihan automatik dan pengimbangan beban, serta mempunyai prestasi tinggi dan ketersediaan yang tinggi.

Kod contoh:

$cluster = new CouchbaseCluster('http://localhost:8091');
$bucket = $cluster->openBucket('default');
$result = $bucket->get('product_123')->value;
if(!$result) {
  $result = '...'; // 从数据库或其他资源中读取数据
  $bucket->upsert('product_123', $result);
}
echo $result;

4. Ringkasan

Caching ialah cara yang sangat penting untuk pengoptimuman prestasi Php menyediakan pelbagai kaedah caching, termasuk caching memori dan caching fail. , anda juga boleh menggunakan perpustakaan caching pihak ketiga, seperti Redis, MongoDB dan Couchbase. Apabila memilih kaedah cache, anda perlu memilih penyelesaian yang paling sesuai berdasarkan keperluan perniagaan dan seni bina sistem anda sendiri, dan melaraskan parameter seperti masa cache, saiz cache dan algoritma cache mengikut situasi sebenar untuk mencapai kesan pengoptimuman prestasi terbaik. .

Atas ialah kandungan terperinci Bagaimanakah php menggunakan caching?. 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