PHP調用session_start後頁面始終載入的問題研究_PHP教程

來源:互聯網
上載者:User
本文章來給大家介紹一篇PHP調用session_start後頁面始終載入的問題研究,有需要的朋友可參考。一個PHP頁面的執行時間比較長(15秒左右),而只要這個頁面沒有執行完畢,其他的頁面訪問都是長時間載入狀態,只有那個頁面執行完畢了,剩下的頁面才能開啟。這是什麼情況呢,經過查看,兩個頁面都設計到了SESSION操作,範例程式碼如下:頁面一:頁面二: 訪問頁面一地時候同時訪問頁面二,你會發現頁面二會一直保持載入狀態直到頁面一執行完畢。問題的原因是什麼呢?答案是PHP的SESSION機制在作怪,PHP只會在頁面代碼執行完畢之後才會把SESSION資料寫入到檔案中,頁面不執行完畢,對應的SESSION檔案一直都儲存著鎖定狀態,而其他的頁面要訪問這個SESSION檔案就只能保持等待狀態,這就是為什麼頁面二需要等待頁面一執行完畢之後才執行。 知道原因後,我們應該如何解決這個問題呢?答案很簡單,PHP已經在核心中提供了相關介面:函數 session_write_close
函數官方文檔的描述如下: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.Session資料通常在你的指令碼結束後自動儲存而不需要調用session_write_close函數。但是session為了避免資料被同時寫入將檔案鎖定住以保證每次只有一個指令碼可以訪問檔案。當你在用架構頁面同時訪問SESSION的時候將會遇到因為檔案鎖定而出現的架構持續載入情況。你可以在處理完SESSION變數後立即使用這個函數減少多個架構的載入時間。 像前面的問題,我們可以直接在操作完SESSION資料後調用session_write_close函數立即寫入session資料,這樣就不會影響到其他頁面的正常運行。代碼如下:

http://www.bkjia.com/PHPjc/632085.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632085.htmlTechArticle本文章來給大家介紹一篇PHP調用session_start後頁面始終載入的問題研究,有需要的朋友可參考。一個PHP頁面的執行時間比較長(15秒左右),...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.