同時AJAX 請求無法並行運行
可能會遇到以下問題:兩個AJAX 請求,其中一個用於將資料匯出到XLSX 檔案另一個用於顯示進度更新,無法同時運行。第一個請求非常耗時,似乎阻止了進度更新的顯示。
說明:
此行為可歸因於會話阻塞。 PHP 預設將會話資料儲存在檔案中。當使用 session_start() 啟動會話時,會話檔案將開啟以進行寫入並鎖定以防止並發修改。因此,任何後續啟用會話的 PHP 請求都必須等待前一個請求釋放鎖定才能繼續。
解決方案:
要解決此問題,請執行以下操作:可以將PHP 配置為使用替代會話儲存方法(例如資料庫、memcached),或在向會話寫入資料後明確關閉會話寫入。後一種方法可以使用 session_write_close() 函數來實現。以下是一個範例:
<code class="php"><?php session_start(); // start session // Write data to session (if necessary) session_write_close(); // close session file, releasing lock // Read or use session data as needed</code>
透過關閉會話寫入,可以解鎖會話檔案並允許後續 AJAX 請求繼續進行,而無需等待第一個請求完成。
以上是為什麼我的同時 AJAX 請求沒有並行運行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!