Selepas menyemak sesi hari ini, saya mempunyai pemahaman yang lebih baik, dan saya juga mempunyai sedikit keraguan. Tolong bantu saya menganalisisnya.
Soalan pertama ialah dalam PHP, session mempunyai mekanisme kutipan sampah Prinsipnya ialah mekanisme kutipan sampah boleh dicetuskan seberapa kerap session_start
dicetuskan. Jadi soalan saya, jika sesi saya telah melepasi 1440 saat, tetapi kitar semula tidak dicetuskan serta-merta, mungkin tidak dalam masa 5 minit, adakah saya masih boleh mendapatkan data sesi pada masa ini?
Soalan kedua ialah mengenai prinsip tamat tempoh sesi. Semua buku mengatakan bahawa ia adalah berdasarkan masa pengubahsuaian fail sesi. Soalan saya adalah seperti berikut: 1) Apabila saya biasanya melawati tapak web, tanpa mengubah suai data sesi, adakah saya keluar dengan tepat selepas 1440 saat? 2) Atau adakah ini bermakna setiap kali saya memuat semula halaman web, fail sesi akan diubah suai filemtime
? Apakah prinsip pelaksanaan sesi.
Masalah ketiga ialah masalah tetapan session_set_save_handler
PHP Hanya dengan mengetahui cara sesi mengendalikan filemtime
kita boleh menulis session_set_sa dengan baik. Kaedah
, kerana jika read
dalam ve_handlerfilemtime
diubah suai setiap kali halaman web dimuat semula, ia mesti diubah suai dalam read
< kod>masa fail.
Pada prinsipnya, anda tidak boleh mendapatkannya, kerana kod yang diperolehi dibaca melalui PHP, dan proses pembacaan akan menyemak semula sama ada ia telah tamat tempoh, anda masih tidak boleh mendapatkannya.
1) Masa yang dikonfigurasikan dalam php.ini adalah tepat dan tidak sah. Anda boleh mengubah suai tetapan ini dalam program, tetapi masih disyorkan untuk mengubah suai fail konfigurasi. Kenapa dikatakan betul dan salah itu tidak sah? Oleh kerana PHP bukan pemastautin memori, ia perlu menggunakan setiap permintaan untuk mengesahkan sama ada tugas berjadual tertentu dicetuskan Ini adalah salah satu sebab yang kedua adalah untuk mengurangkan kehilangan prestasi yang disebabkan oleh setiap kutipan sampah PHP menetapkan dua parameter Kebarangkalian kutipan sampah ialah session.gc_probability dan session.gc_pisor masing-masing gc_probability/gc_pisor ialah kebarangkalian, contohnya, jika 1/100, maka ia hanya akan dicetuskan sekali untuk sekurang-kurangnya 100 permintaan.
2) Setiap kali ia dimuat semula, masa fail akan berubah.
Melihat pelaksanaan sesi rangka kerja Laravel Berikut ialah storan fail dan borang storan pangkalan data:
Tiada kod berkaitan yang serupa dengan menyegarkan masa fail ditemui.
Selepas ujian, dalam kes penyimpanan fail, tetapkan session.gc_maxlifetime kepada 30 saat Jika melebihi 30 saat, data sesi masih boleh dikeluarkan. Dan dalam kes penyegaran seterusnya, masa filem memang akan ditukar kepada yang semasa.
Bolehkah sesiapa menerangkan sebabnya dan menukar storan tersuai kepada memcache atau adakah pangkalan data akan disimpan dalam format yang sama seperti fail?