簡體   English   中英

PHP ::: Speed Test ::: $ _SESSION ::: unset()與空白字符串

[英]PHP ::: Speed Test ::: $_SESSION ::: unset() vs. blank string

我有一個表單,其中包含幾個相當活躍的字段。 據說有一個驗證件。

用戶POST和值存儲在$ _SESSION變量中。

失敗時,$ _SESSION變量被清除,這些變量不正確。 我之所以這樣做,是因為表單echo回顯了之前仍然正確的值,不便於用戶。

哪個更快:

$_SESSION['variable']="";

PRO - >每個表單POST的操作較少
CON - > Server在任何給定點存儲更多$ _SESSION變量。

unset($_SESSION['variable']);

PRO - >每個表單POST的更多操作
CON - > Server在任何給定點存儲較少的$ _SESSION變量。

思考?

您應該unset()因為將其設置為空字符串意味着會話變量仍然存在並指向內存中的某個位置。

你不應該擔心這個階段會更快,只要想想最能傳達代碼意圖的東西。

通過將session var設置為空字符串,我不確定“每個表單帖子的操作少”是什么意思。 這只是一個時髦的鏡頭,但我猜你正在做這樣的事......

foreach( $_POST as $k => $v ) {
  if( $v == 'correct value' ) {
    $_SESSION[$k] = $v;
  } else {
    if( isset($_SESSION[$k] ) unset($_SESSION[$k] );
}

如果沒有,那么你可能應該是。 這樣,有史以來唯一設置的會話變量(因此耗盡資源)將成為有效答案,並且如果他們重新提交表單並獲得之前正確的答案錯誤,它將轉儲它。 然后你可以再做另一個foreach來轉出會話變量以供用戶閱讀。

正如一般的經驗法則,取消設置變量比將其設置為“”更好,因為它使用較少的資源將其從內存中刪除。 如果需要,重新設置它所需的納秒左右可以忽略不計,除非你每分鍾都在談論成千上萬的請求,而且聽起來並不像你那樣。

至於它是否絕對至關重要? 咩。 我工作的公司有會話變量,當我執行var_dump時,這些變量實際上是頁面長。 至少1000個對象的實例,我們的服務器每月需要數百萬個獨特的點擊量,所以除非你說的不止這些,否則我懷疑它會給任何人帶來明顯的差別。

使用unset($_SESSION['variable']); 完全清除它。

順便說一句,如果您不重定向頁面,則無需在會話中存儲用戶輸入。

我同意亞歷克斯。 是的,您必須重新初始化SESSION變量,但是根據php解釋器的編寫方式,它們可能會預分配內存,以便內存初始化非常快,使其與首先重置字符串一樣快。 如果有什么我會做的只是為了清晰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM