php - Pemahaman lanjut tentang sesi, prinsip sesi dan mekanisme kitar semula.
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 13:02:04
0
2
474

Selepas menyemak sesi hari ini, saya mempunyai pemahaman yang lebih baik, dan saya juga mempunyai sedikit keraguan. Tolong bantu saya menganalisisnya.

  1. 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?

  2. 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.

  3. 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 read dalam ve_handler, kerana jika filemtime diubah suai setiap kali halaman web dimuat semula, ia mesti diubah suai dalam read< kod>masa fail.

过去多啦不再A梦
过去多啦不再A梦

membalas semua(2)
阿神
  1. 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.

  2. 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.

  3. Melihat pelaksanaan sesi rangka kerja Laravel Berikut ialah storan fail dan borang storan pangkalan data:

    public function read($sessionId)
    {
        if ($this->files->exists($path = $this->path.'/'.$sessionId)) {
            if (filemtime($path) >= Carbon::now()->subMinutes($this->minutes)->getTimestamp()) {
                return $this->files->get($path);
            }
        }

        return '';
    }
public function read($sessionId)
    {
        $session = (object) $this->getQuery()->find($sessionId);

        if (isset($session->last_activity)) {
            if ($session->last_activity < Carbon::now()->subMinutes($this->minutes)->getTimestamp()) {
                $this->exists = true;

                return;
            }
        }

        if (isset($session->payload)) {
            $this->exists = true;

            return base64_decode($session->payload);
        }
    }

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?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan