關閉會話有沒有一種方法來關閉PHP會話沒有編寫或摧毀它?我缺少的東西還是有隻有兩個功能(session_write_close()
和session_destroy()
)的重置session_status()
到PHP_SESSION_NONE
?換句話說,如果我有一個開放會話,我可以簡單地關閉它而不影響外部會話數據,因此可以重新加載它。無需編寫或摧毀它
無需編寫或摧毀它
回答
您可以通過$_SESSION = null
做到這一點。會話不可用,但數據仍然存在(不會被刪除)。
考慮你在會議上有數據:
<?php
session_start();
session_regenerate_id(); // get a fresh id
echo session_id();
$_SESSION['test'] = '12345';
print_r($_SESSION); // echoes the data in the session
數據:test|s:5:"12345";
然後在下一個請求:
<?php
session_start();
echo session_id() . "<br>"; // echoes the same id as of the last request
$_SESSION = null;
print_r($_SESSION); // echoes nothing
echo "<br>";
echo session_status(); // echoes 2 (PHP_SESSION_ACTIVE)
數據仍然是相同的:test|s:5:"12345";
( php-fpm 5.4.29, most recent nginx, memcached as session handler
)。
孔的數據仍然可以通過$_SESSION['whatever'] = ...
寫,但沒有看過。我不確定這是否是一個好的解決方案,但我不得不承認,我仍然不明白爲什麼或者你需要什麼。
作爲替代方案,你可以實現會話的包裝類與屬性$this->active = true; // or false
:
class MySessionWrapper {
protected $active;
protected $data;
// getter setter for $this->active and $this->data ...
public function getData($var) {
if ($this->active !== true) {
throw new Exception('session disabled');
}
}
}
感謝您的關注。第一部分不是真正的解決方案 - session_status保持活動狀態。第二種解決方案就是我目前擁有的解決方案,但這種解決方案意味着重新發明車輪。我需要一個測試套件,我需要在運行隔離的php命令後重新加載當前會話數據,這個命令通常會修改它。有幾種解決方法,但它們都很笨拙,並且在使用本地會話功能時通常會導致不良結果。 –
@IanBytchek好吧,我現在瞭解你的情況。不幸的是我不能想象一個更好的解決方案。祝你好運:) – DanFromGermany
欣賞你的輸入:) –
- 1. Bootstrap工具提示和popovers:摧毀,或不摧毀?
- 2. Highcharts無法摧毀標籤
- 3. 無法摧毀父對象
- 4. 「摧毀」DragShadowBuilder
- 5. 如何從視圖中摧毀活動?或者如何摧毀他們?
- 6. Gtk#摧毀事件
- 7. KineticJS摧毀舞臺
- 8. 如何摧毀libgdx
- 9. 如何摧毀PHP
- 10. 摧毀FastButton事件
- 11. AutoLayout摧毀路口
- 12. 應用摧毀代碼編輯
- 13. 無法摧毀Android的活動
- 14. 當摧毀一個記錄,另外一個被摧毀
- 15. PHP會話摧毀試圖摧毀未初始化會話
- 16. popupanel,它的方法來摧毀它,而不是隱藏它
- 17. 摧毀組件本身 - angular2
- 18. 熊貓摧毀單柱
- 19. 如何完全摧毀tinymce?
- 20. 摧毀拾取對象OnMouseDown
- 21. 摧毀many_to_many關係Rails
- 22. 摧毀一個意圖?
- 23. IME_ACTION_DONE似乎摧毀Android上
- 24. before_create - 摧毀多個記錄
- 25. Rails的摧毀與jQuery AJAX
- 26. HippoMocks堅持摧毀模擬
- 27. 如何摧毀的jqGrid
- 28. 子框架不摧毀python
- 29. 不能摧毀線程
- 30. 即時摧毀PHP會話
有沒有必要那樣做。如果您不希望會話「啓用」 - 只是不要使用它。 – DanFromGermany
謝謝你的邏輯思維的騎士。如果我不想一開始就使用它,那麼我很難進入問這個階段。 –