2015-04-22 15 views
5

Từ php hướng dẫn chính thức:Session_register_shutdown thực sự làm gì?

session_register_shutdown - phiên shutdown chức năng

Thanh ghi session_write_close() như một chức năng tắt máy.

Vì vậy, tắt phiên có nghĩa là gì? Sự khác biệt giữa session_write_close và điều này là gì?

Để làm rõ, chức năng này thực sự làm gì? Khi nào chúng ta sẽ sử dụng nó?

Có vẻ như ít người đang sử dụng và nói về chức năng này trên web.

+0

Bạn đã đọc phần còn lại của trang chưa? "Đăng ký session_write_close() như một chức năng tắt máy." Nhận xét của người dùng đưa ra một tương đương cho các phiên bản PHP cũ cũng làm cho nó khá rõ ràng. – IMSoP

+3

Tôi đang bỏ phiếu để đóng câu hỏi này là không có chủ đề vì câu hỏi này có thể được trả lời bằng cách đọc tài liệu tại http://php.net/session_register_shutdown – Sven

+3

Tất nhiên tôi đã đọc, nhưng tôi vẫn không hiểu. "Đăng ký session_write_close() như một chức năng tắt máy." Khi nào và tại sao chúng ta có thể sử dụng chức năng này? –

Trả lời

6

Chức năng này hiếm khi được sử dụng trên thực tế, hầu như không có cuộc thảo luận trên internet, cuối cùng tôi đã tìm thấy câu trả lời từ các ý kiến ​​mã nguồn:

/* This function is registered itself as a shutdown function by 
* session_set_save_handler($obj). The reason we now register another 
* shutdown function is in case the user registered their own shutdown 
* function after calling session_set_save_handler(), which expects 
* the session still to be available. 

Từ: https://github.com/php/php-src/blob/master/ext/session/session.c

Và, rõ ràng, so với hướng dẫn chính thức, điều này nêu rõ chính xác nó làm gì.

Câu hỏi này có vẻ ngớ ngẩn.

+0

Cảm ơn, điều này đã giúp tôi rất nhiều! Điều này sẽ có trong tài liệu trực tuyến! – oucil

3

Đây là câu hỏi hợp lý. Tôi cũng bị nhầm lẫn bởi tài liệu.

Những gì tôi đã có thể giải nén sau khi đọc nó một chục lần là chức năng chỉ là một phiên bản shortcut của mã

register_shutdown_function('session_write_close');

Nếu bạn gọi die() hoặc thoát trong một kịch bản php sự phiên sẽ không được đóng đúng cách (đặc biệt nếu bạn có trình xử lý phiên tùy chỉnh). Hàm này không là gì ngoài một phím tắt.

đang bootstrap của tôi cho phiên xử lý cụ thể của tôi trông giống như:

// 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(); 

Chức năng session_register_shutdown đảm bảo chức năng của tôi SQLSrvSessionHandler::sessionCloseSQLSrvSessionHandler::sessionWrite được gọi là thậm chí nếu tôi chạy một chết hoặc thoát báo cáo.

Tôi cũng tìm thấy this answer hữu ích.

Các vấn đề liên quan