Apabila trafik tapak web meningkat, pelayan bahagian belakang perlu mengurus beribu-ribu sesi pengguna. Tugas ini sangat intensif sumber pelayan kerana pendekatan tradisional adalah untuk menyimpan data sesi dalam sistem fail pada pelayan. Walau bagaimanapun, dengan kemajuan teknologi dan kemunculan Redis, kami kini boleh memanfaatkan Redis untuk mengurus sesi, dengan itu meningkatkan prestasi dan kebolehpercayaan pelayan.
Redis ialah pangkalan data dalam memori yang cekap yang menyokong penyimpanan dan mendapatkan semula pelbagai struktur data. Redis sendiri ditulis dalam C, tetapi ia menyokong perpustakaan pelanggan dalam pelbagai bahasa, menjadikannya mudah untuk aplikasi PHP menggunakan Redis. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Redis untuk mengurus sesi untuk aplikasi PHP.
Dalam pengurusan sesi tradisional, apabila pengguna log masuk, aplikasi PHP mencipta ID sesi unik dan menyimpannya dalam kuki penyemak imbas. PHP kemudian menyimpan data sesi dalam sistem fail pelayan dan mendapatkannya semula pada kali berikutnya pengguna melawat tapak web. Pendekatan ini mempunyai beberapa kelemahan:
Oleh itu, kami memerlukan cara yang lebih baik untuk mengurus sesi, yang seharusnya mengoptimumkan aspek seperti prestasi, kebolehpercayaan dan kebolehskalaan.
Redis ialah pangkalan data NoSQL yang popular kerana ia mempunyai kelebihan berikut:
Oleh itu, apabila menggunakan Redis untuk mengurus sesi aplikasi, tidak perlu lagi menyimpan data sesi dalam sistem fail. Sebaliknya, kami boleh menyimpan data sesi dalam memori Redis, meningkatkan prestasi dan kebolehpercayaan.
Di bawah ini kami akan menerangkan cara menggunakan Redis untuk mengurus data sesi dalam aplikasi PHP.
Pertama, anda perlu menentukan sama ada PHP telah memasang sambungan Redis Jika ia tidak dipasang, anda perlu memuat turun dan memasangnya.
Pada Debian/Ubuntu, anda boleh menggunakan arahan berikut untuk memasang sambungan Redis:
sudo apt-get install php-redis
Pada CentOS/RHEL, anda boleh menggunakan arahan berikut untuk memasang sambungan Redis:
sudo yum install php-redis
Selepas memasang sambungan Redis, anda perlu mendayakannya dalam fail konfigurasi PHP. Tambahkan baris berikut pada fail php.ini:
extension=redis.so
Seterusnya, kita perlu menukar cara aplikasi PHP kami menyimpan sesi supaya ia menggunakan Redis sebagai stor data.
Dalam aplikasi PHP, terdapat pengendali sesi untuk mengurus data sesi, jadi kami perlu mencipta pengendali sesi tersuai untuk menyimpan dan mendapatkan semula data sesi menggunakan Redis. Berikut ialah pengendali sesi tersuai yang mudah:
<?php class RedisSessionHandler implements SessionHandlerInterface { private $client; private $ttl; public function __construct($client, $ttl = 1440) { $this->client = $client; $this->ttl = $ttl; } public function open($savePath, $sessionName) { return true; } public function close() { unset($this->client); return true; } public function read($sessionId) { $result = $this->client->get($sessionId); return ($result === false) ? '' : $result; } public function write($sessionId, $sessionData) { return $this->client->setex($sessionId, $this->ttl, $sessionData); } public function destroy($sessionId) { return $this->client->del($sessionId); } public function gc($maxlifetime) { return true; } } ?>
Kod ini melaksanakan antara muka SessionHandlerInterface PHP. Antara muka ini mengandungi kaedah yang diperlukan untuk menyimpan dan mendapatkan semula data sesi menggunakan Redis. Dalam kod di atas, kami menggunakan arahan setex Redis untuk menetapkan masa tamat sesi. Tempoh sah sesi boleh diubah dengan menukar pembolehubah $ttl (masa tamat tempoh).
Akhir sekali, anda perlu memberitahu PHP untuk memanggil pengendali sesi tersuai untuk menyimpan dan mendapatkan semula data sesi dalam Redis. Ini boleh dicapai dalam aplikasi PHP menggunakan kod seperti ini:
<?php require_once('RedisSessionHandler.php'); $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redisHandler = new RedisSessionHandler($redis, 86400); session_set_save_handler($redisHandler); session_start(); ?>
Dalam kod di atas, kami mencipta sambungan Redis dan menyerahkannya kepada pengendali sesi tersuai. Kami kemudian mengkonfigurasi fungsi pengendali tersuai sebagai pengendali sesi lalai PHP menggunakan fungsi session_set_save_handler() PHP. Akhir sekali, kami memanggil session_start() untuk memulakan pengendali sesi.
Dalam artikel ini, kami membincangkan cara menggunakan Redis untuk mengurus sesi untuk aplikasi PHP. Menyimpan data sesi dalam memori Redis menghasilkan prestasi, kebolehpercayaan dan kebolehskalaan yang lebih baik. Dengan mencipta pengendali sesi tersuai, kami boleh menyimpan data sesi daripada aplikasi PHP dalam Redis untuk perkongsian antara berbilang pelayan atau mesin maya. Akhir sekali, kami menunjukkan cara untuk mengkonfigurasi pengendali sesi Redis tersuai menggunakan fungsi session_set_save_handler() terbina dalam PHP.
Atas ialah kandungan terperinci Pembangunan PHP: Cara menggunakan Redis untuk mengurus Sesi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!