0
Sleep in Laravel
Khi dùng hàm sleep trong controller. thì mọi request (mở tab mới, cửa sở mới) tới web đều sẽ bị đứng cho tới khi hàm sleep kết thúc. Mọi người cho mình hỏi là tại sao lại vậy
Code:
$timeStart = time();
echo "Start: " . date('H:i:s', time()) . "\n";
if (isset($_GET["sleep"])) {
sleep(10);
}
$timeEnd = time();
$timeTotal = $timeEnd - $timeStart;
echo "End: " . date('H:i:s', time()) . "\n";
echo "Time Process:" . $timeTotal . "\n\n\n\n";
Đây là kết quả của request:
Thêm một bình luận
1 CÂU TRẢ LỜI
0
sleep
là một hàm của PHP, chương trình sẽ chạy nghỉ ở lời gọi hàm sleep với số giây tương ứng. Rồi mới chạy tiếp.
echo time() . ': Tam dung 10s';
sleep(10);
echo time() . ': Het 10s';
Cái này là do bị lock session, các request sau có sử dụng session sẽ bị lock bởi request trước (Request bạn gọi hàm sleep). Do đó bạn có thể đóng session (gọi hàm session_write_close ) trước khi gọi hàm sleep hoặc thực hiện tác vụ nặng tốn thời gian nào đó để tránh bị lock session