Yêu cầu thg 8 17, 2018 3:24 CH 823 0 1
  • 823 0 1
0

Sleep in Laravel

Chia sẻ
  • 823 0 1

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:

1 CÂU TRẢ LỜI


Đã trả lời thg 8 18, 2018 8:37 SA
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';
Chia sẻ
thg 8 18, 2018 6:34 CH

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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí