此時,若另外開一個也有使用session的頁面,
則須等前一個頁面執行完畢,才能再執行。
也就是有執行 session_start() 的頁面,若前一個頁面尚未執行完畢,繼續執行的其他頁面會被阻塞住。
要避免等前一個頁面執行完畢,才能執行下一個頁面的情況,
可以使用 session_write_close() ,表示不會對 session 做寫入的動作,
這樣其他頁面就不會等此頁面執行完才能再執行,便可達成非阻塞操作。
a.php程式碼如下
//a.php session_start(); sleep(15); echo "end";b.php程式碼如下
//b.php session_start(); echo "end";
執行結果如下,左圖(a.php)尚未執行完畢,則右圖(b.php)須等a.php執行完才能執行。
範例:使用 session_write_close()
a.php程式碼如下
//a.php session_start(); session_write_close();//加上session_write_close sleep(15); echo "end";b.php程式碼如下
//b.php session_start(); echo "end";
執行結果如下,左圖(a.php)尚未執行完畢,右圖(b.php)不須等a.php執行完亦可執行。
註:若執行 session_write_close() 後,又想對 session 有寫入的操作,只須再執行 session_start(),即可改回可對 session 寫入的阻塞操作模式。
其他:
沒有留言:
張貼留言