Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng hàm sleep hoặc usleep trong PHP để tạm dừng tập lệnh
Khi viết các tập lệnh PHP của bạn, có thể đôi khi bạn cảm thấy muốn tạm dừng/ngủ tập lệnh
Tạm dừng thực thi tập lệnh rất hữu ích trong các tình huống khác nhau. Một ví dụ về cách sử dụng là khi thực hiện một số lượng lớn các yêu cầu mạng, bạn có thể muốn ngủ tập lệnh PHP của mình để ngăn nó tràn vào mạng
Bạn cũng có thể sử dụng nó để ngăn tập lệnh tiêu thụ một lượng tài nguyên CPU bất thường. Sử dụng chức năng ngủ giữa các tác vụ có thể ngăn những tác vụ hoàn thành nhanh nhanh chóng áp đảo CPU
Hai cách chính mà bạn có thể ngủ tập lệnh trong PHP là sử dụng “
1” hoặc “
2“. Trong các phần sau, chúng tôi sẽ đề cập đến cả haiGiải thích nhanh giữa những điều này là chức năng “
1” hoạt động trong vài giây và “
2” hoạt động trong micro giâyHàm PHP ngủ []
Sử dụng chức năng ngủ của PHP, có thể tạm dừng việc thực thi tập lệnh trong một số giây được chỉ định
Hàm chỉ nhận một tham số duy nhất có tên là “
0“, trong đó bạn đặt thời gian ngủ tính bằng giâyDưới đây bạn có thể xem định nghĩa cho hàm
1 trong PHP. Bạn có thể thấy tham số của nó được lấy dưới dạng số nguyên và nó trả về một số nguyênsleep[int $seconds]: int
Hàm sleep[] sẽ trả về 0 [
2] khi nó ngủ thành công. Tuy nhiên, nếu ngủ tập lệnh không thành công, nó sẽ trả về giá trị Boolean
3Vì hàm này có thể trả về
2 hoặc
3, hãy đảm bảo bạn sử dụng toán tử giống hệt của PHP [
6] khi kiểm tra giá trị trả về. Mặt khác, kiểu tung hứng của PHP sẽ coi 0 và false là giống nhauXin lưu ý rằng giây không thể là một phần của giây. Nếu bạn cần một phần giây, hãy sử dụng hàm
7Ví dụ sử dụng hàm sleep[] trong PHP
Bây giờ chúng ta đã biết cú pháp của hàm sleep[], hãy viết một đoạn script PHP nhanh để bạn có thể thấy nó hoạt động như thế nào
Chúng tôi sẽ sử dụng hàm echo của PHP để in thời gian hiện tại cho ví dụ này. Ta có thể lấy lại thời gian hiện tại nhờ hàm
8. Sử dụng tùy chọn “
9” sẽ nhận được giờ, phút và giây hiện tạiChúng tôi bắt đầu bằng cách in chuỗi “
sleep[int $seconds]: int
00“, nối thời gian hiện tại và cuối cùng, ký tự dòng mới [sleep[int $seconds]: int
01]Sau đó, chúng tôi sử dụng hàm
1 của PHP để sử dụng, đặt tham số duy nhất của nó thành “sleep[int $seconds]: int
03” để ngủ tập lệnh trong 5 giâyCuối cùng, để cho bạn thấy tập lệnh đã ngủ, chúng tôi in văn bản “
sleep[int $seconds]: int
04“, nối thời gian hiện tại
Sau khi chạy tập lệnh này, bạn sẽ thấy kết quả tương tự như những gì chúng tôi đã hiển thị bên dưới
Với sự khác biệt về thời gian, bạn có thể thấy chức năng ngủ đã tạm dừng việc thực thi tập lệnh như thế nào
sleep[int $seconds]: int
0Hàm usleep[] trong PHP
Nếu bạn cần tạm dừng việc thực thi tập lệnh PHP của mình trong thời gian ngắn hơn một giây, bạn sẽ cần sử dụng hàm usleep[]
Với chức năng này, bạn có thể chỉ định số micro giây mà bạn muốn tập lệnh ở chế độ ngủ. Một micro giây là một phần triệu giây
Ví dụ: nếu bạn muốn ngủ tập lệnh PHP của mình trong một phần tư giây [
sleep[int $seconds]: int
05], bạn sẽ sử dụng giá trị sleep[int $seconds]: int
06Dưới đây, bạn có thể xem định nghĩa cho hàm usleep[] trong PHP. Nó có một tham số duy nhất phải luôn là số nguyên và nó trả về một số nguyên
sleep[int $seconds]: int
8Giống như chức năng ngủ,
7 sẽ trả về
2 khi nó ngủ thành công. Tuy nhiên, nếu chức năng không ngủ trong suốt thời gian đó, nó sẽ trả về
3Xin lưu ý rằng việc sử dụng thời gian ngủ ngắn dài hơn “
sleep[int $seconds]: int
80” [1 giây] có thể không được hệ thống máy chủ hỗ trợVí dụ về việc sử dụng hàm usleep[]
Đối với ví dụ này, chúng tôi sẽ sử dụng hàm usleep[] của PHP để ngủ tập lệnh của chúng tôi trong 250000 micro giây [một phần tư giây]
Chúng tôi sẽ cần sử dụng thời gian được cung cấp bởi chức năng “
sleep[int $seconds]: int
81” để theo dõi điều này. Điều này cung cấp cho chúng tôi dấu thời gian Unix hiện tại tính bằng micro giâyBắt đầu tập lệnh bằng cách lấy thời gian vi mô hiện tại và lưu trữ nó trong biến “
sleep[int $seconds]: int
82”Sau đó, chúng ta có thể sử dụng hàm
2, chuyển vào sleep[int $seconds]: int
06 để ngủ tập lệnh trong sleep[int $seconds]: int
06 micro giâySau khi ngủ, chúng tôi lấy lại thời gian vi mô và lưu trữ nó trong biến “
sleep[int $seconds]: int
86”Sau đó, chúng tôi tính toán tổng thời gian thực hiện bằng cách lấy thời gian kết thúc trừ đi thời gian bắt đầu và lưu trữ nó trong biến “
sleep[int $seconds]: int
87”Cuối cùng, chúng tôi sử dụng hàm echo để xuất tập lệnh mất bao lâu để chạy. Điều này sẽ cho chúng tôi thấy tập lệnh của chúng tôi ngủ như thế nào trong khi thực thi
9Dưới đây là một ví dụ về những gì PHP sẽ in sau khi chạy ví dụ trên
Bạn sẽ nhận thấy rằng thời gian trả về không chính xác là thời gian ngủ vì các chức năng không hoàn thành ngay lập tức
0Phần kết luận
Xuyên suốt hướng dẫn này, chúng tôi đã chỉ cho bạn hai cách để bạn có thể tạm dừng việc thực thi tập lệnh PHP của mình
Hai hàm mà chúng ta đã khám phá trong hướng dẫn này là các hàm
1 và
2 của PHP. Cả hai đều có cách sử dụng cụ thể nhưng sẽ tạm dừng việc thực thi tập lệnh