$ _SESSION Her anında erişim dosya sistemi ile bir i / o içerir mi?

3 Cevap php

Süreç aşağı gittiğinde ben $ _SESSION verilere erişmek her zaman, hemen sadece bir kez diskte oturum dosyasını güncelleştirmek, ya da var mı? Veya veri değişim her n bayt (yıkayın)?

Bu soru belirli dosya oturum işleyicisi hakkında mutlaka değildir, ama her işleyicisi. (Oturumda her dokunuş bellekten hemen normal değişkenin depolanması yanında, her türlü bir I / O çağırmak mı).

3 Cevap

Matt yazdığı gibi, varsayılan olarak komut yürütme sonunda yazıyor. Sen session_write_close() burada bu konuda okuyabilirsiniz

Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done.

Benim kurulum üzerinde ve sürecin sonuna yazar. Ben yeni bir _ session_ write_method yaptı:

public function _session_write_method($id, $sess_data) {
    var_dump(file_put_contents('/var/www/public_html/testing.txt', serialize($sess_data)));
    return(true);
}

ve daha sonra:

$_SESSION['foo'] = 'bar';
while(true)

Ben senaryoyu idam birkaç saniye bekledi ve daha sonra işlem kimliği üzerinde 'sudo öldürmek' koştu. Bu dosyaya tefrika verileri yazmadım. ";" Bar | Ben sonsuz döngü olmadan tekrar koştu ve aldım: sayfanın en altında int (22) ve testing.txt başarıyla yazılmıştır ve içerdiği: s: 14: ": 3 s foo" ;

Işleyicisi bağlıdır. Emin sadece sıklıkta davranışları konusunda kesinlikle emin olmak istiyorsanız istediğiniz gibi olur yapmak için kendi işleyicisi yazabilirsiniz. Oturum değişkenleri yönetmek için kullanılan 6 callbacks vardır. "Yazmak" olarak adlandırılan herhangi bir gerçek I / O gerçekleştirmek zorunda değildir ve oturum dosyası yazma "yakın" çağrısı kadar bekleyebilirdi. Bu dediğim gibi, işleyici bağlıdır ki bir uygulama ayrıntı.