Questa è una domanda giusta. Sono stato anche confuso dalla documentazione.
Quello che sono stato in grado di estrarre dopo averlo letto una dozzina di volte è che la funzione è solo una versione scorciatoia del codice
register_shutdown_function('session_write_close');
Se si chiama die() o l'uscita in uno script php la la sessione non verrà chiusa correttamente (specialmente se si dispone di un gestore di sessioni personalizzato). Questa funzione non è altro che una scorciatoia.
Il mio codice di bootstrap per il mio specifico gestore di sessione appare come:
// Set the session handlers to the custom functions.
$handler = new SQLSrvSessionHandler();
session_set_save_handler(
array($handler, 'sessionOpen'),
array($handler, 'sessionClose'),
array($handler, 'sessionRead'),
array($handler, 'sessionWrite'),
array($handler, 'sessionDestroy'),
array($handler, 'sessionGC')
);
session_register_shutdown();
La funzione session_register_shutdown
assicura la mia funzione SQLSrvSessionHandler::sessionClose
e SQLSrvSessionHandler::sessionWrite
sono chiamati, anche se ho eseguito un dado o di uscita dichiarazioni.
Ho trovato anche this answer utile.
Hai letto il resto della pagina? "Registra session_write_close() come funzione di arresto." Il commento dell'utente che fornisce un equivalente per le vecchie versioni di PHP rende anche abbastanza chiaro ciò che fa. – IMSoP
Sto votando per chiudere questa domanda come off-topic perché questa domanda può essere risolta leggendo la documentazione su http://php.net/session_register_shutdown – Sven
Naturalmente ho letto, ma continuo a non capire. "Registra session_write_close() come funzione di arresto." Quando e perché possiamo usare questa funzione? –