Làm cách nào để có được micro giây trong PHP?

Tôi quyết định thêm bài đăng rất đơn giản này để chứng minh cách chúng ta có thể lấy thời gian hiện tại tính bằng micro giây, mili giây và nano giây sau đó chuyển đổi chúng trở lại thời gian hiện tại


Thí dụ


// MILLISECONDS
$currentMilliSecond = [int] [microtime[true] * 1000];
echo 'CUR MILLISECONDS:'.$currentMilliSecond.PHP_EOL;
echo 'DATE:'.date['d/m/Y H:i:s', intval[$currentMilliSecond/1000]].PHP_EOL;

// MICROSECONDS
$currentMicroSecond = [int] [microtime[true] * 1000000];
echo 'CUR MICROSECONDS:'.$currentMicroSecond.PHP_EOL;
echo 'DATE:'.date['d/m/Y H:i:s', intval[$currentMicroSecond/1000000]].PHP_EOL;

// NANOSECONDS
$currentNanoSecond = [int] [microtime[true] * 1000000000];
echo 'CUR NANOSECONDS:'.$currentNanoSecond.PHP_EOL;
echo 'DATE:'.date['d/m/Y H:i:s', intval[$currentNanoSecond/1000000000]].PHP_EOL;


Kết quả


CUR MILLISECONDS:1523390684112
DATE:10/04/2018 16:04:44

CUR MICROSECONDS:1523390684112993
DATE:10/04/2018 16:04:44

CUR NANOSECONDS:1523390684113001984
DATE:10/04/2018 16:04:44

Đôi khi có thể cần phải có thời gian với phần micro giây. Đặc biệt nó rất tốt cho những thứ như ghi nhật ký khi nhiều mục được ghi lại mỗi giây và tốt hơn là biết chúng được trải ra như thế nào

Thoạt nhìn mọi thứ có vẻ rất dễ dàng

print date['Y-m-d H:i:s.u'] ;

ngày in ['Y-m-d H. i. s. u'] ;

trong đó u là micro giây

Tuy nhiên, hóa ra hướng dẫn sử dụng PHP có một ghi chú nhỏ ghi rõ

Vì hàm [date[]] này chỉ chấp nhận dấu thời gian số nguyên nên ký tự định dạng u chỉ hữu ích khi sử dụng hàm date_format[] với dấu thời gian dựa trên người dùng được tạo bằng date_create[]

Điều đó có nghĩa là bạn vẫn hoạt động nhưng trong trường hợp gọi hàm date[] thì kết quả luôn là. 000000

Vì vậy, giải pháp đơn giản có thể là một cái gì đó như thế này

print date['Y-m-d H:i:s'] . substr[[string]microtime[], 1, 8];

ngày in ['Y-m-d H. i. S']. chất nền[[chuỗi]microtime[], 1, 8];

Nhưng nhược điểm của giải pháp trên là hai cuộc gọi đến các chức năng liên quan đến thời gian có khả năng gây ra một số vấn đề về độ chính xác

//Function to convert microtime return to human readable units
//функция для конвертации времени, принимает значения в секундах

function convert_time[$time]
{
    if[$time == 0 ]{
        return 0;
    }
    //допустимые единицы измерения
    $unit=array[-4=>'ps', -3=>'ns',-2=>'mcs',-1=>'ms',0=>'s'];
    //логарифм времени в сек по основанию 1000
    //берем значение не больше 0, т.к. секунды у нас последняя изменяемая по тысяче величина, дальше по 60
    $i=min[0,floor[log[$time,1000]]];

    //тут делим наше время на число соответствующее единицам измерения т.е. на миллион для секунд,
    //на тысячу для миллисекунд
    $t = @round[$time/pow[1000,$i] , 1];
    return $t.$unit[$i];
}

PHP microtime là một hàm tích hợp trả về dấu thời gian Unix hiện tại ở định dạng “msec sec”. Ở đây, “sec” đại diện cho giây và “msec” đại diện cho micro giây sau khi được chuyển đổi thành giây. Hàm đã cho chấp nhận một đối số boolean tùy chọn duy nhất “as_float. ”

Vì vậy, kết quả trả về bởi microtime trong PHP có thể được đọc là “microseconds_as_seconds seconds. ” Ngoài ra, bạn không thể nói rằng hàm microtime[] trả về thời gian hiện tại tính bằng micro giây. Hơn nữa, nếu bạn chuyển “true” cho hàm microtime của PHP, bạn sẽ nhận được thời gian hiện tại chỉ tính bằng giây.

Ví dụ mã hóa

Các ví dụ mã hóa sau đây đã được tạo để chỉ cho bạn cách sử dụng chức năng microtime. Ngoài ra, bạn sẽ có thể thấy sự khác biệt trong kết quả đầu ra dựa trên đối số được truyền cho hàm đã cho

– Hàm microtime PHP với đối số không

Ví dụ: bạn muốn hiển thị thời gian hiện tại ở dạng “microseconds_as_seconds seconds. ” Ở đây bạn chỉ cần gọi hàm microtime[] mà không cần chuyển bất kỳ đối số nào

Vui lòng xem mã một lớp bên dưới để biết thời gian hiện tại bằng micro giây

– Chuyển đúng sang Hàm microtime PHP

Chẳng hạn, bạn muốn lấy thời gian hiện tại tính bằng giây. Bạn cần sử dụng hàm microtime của PHP bằng cách chuyển “true” làm đối số

Vui lòng xem khối mã này để so sánh các kết quả thu được trước và sau khi chuyển "true" làm đối số

Tăng độ chính xác trong vài giây

Bạn đang tìm kiếm thời gian chính xác hơn do hàm microtime[true] trả về? . tập tin ini. Lệnh đã nói có giá trị mặc định được đặt thành “14. ” Nhưng nếu bạn muốn có nhiều chữ số hơn, bạn có thể gọi hàm ini_set[] để đặt số chữ số mong muốn

– Ví dụ mã hóa

Chẳng hạn, bạn muốn đặt độ chính xác thành 16 chữ số thay vì 14. Do đó, bạn sẽ gọi hàm ini_set[] bằng cách chuyển “độ chính xác” và “16” làm đối số. Sau đó, bạn sẽ gọi hàm microtime[true] để lấy thời gian hiện tại tính bằng giây với độ chính xác cao hơn

Các hướng dẫn mã hóa được cung cấp ở đây sẽ hỗ trợ bạn tăng độ chính xác

Nhận dấu thời gian PHP mili giây

Bạn có muốn có thời gian PHP tính bằng mili giây không? . Tất cả những gì bạn cần làm là nhân đầu ra được tạo bởi hàm microtime[true] với 1000. Bạn không nên nghi ngờ quá trình này vì nó là một công thức toán học cơ bản và thực tế là một giây lớn hơn 1000 lần so với một phần nghìn giây

– Ví dụ mã hóa

Giả sử bạn có một chương trình yêu cầu thời gian tính bằng mili giây. Vì vậy, bạn sẽ chỉ cần thực thi hàm microtime PHP bằng cách chuyển true làm đối số. Do đó, bạn sẽ nhận được thời gian hiện tại tính bằng giây và sau đó bạn sẽ nhân số giây thu được với 1000 để có thời gian PHP tính bằng mili giây

Khối mã được chia sẻ dưới đây sẽ hữu ích cho bạn trong việc hiểu toàn bộ quy trình cũng như độ chính xác của kết quả

Sử dụng microtime PHP để lấy dấu thời gian Unix trong micro giây

Có thể lấy dấu thời gian Unix hiện tại tính bằng micro giây không? . Vì một phần triệu giây là phần 1/1000000 của giây, nên giá trị thời gian thu được tính bằng phần triệu giây sẽ đủ dài. Và thật không may, nếu bạn đang sử dụng Hệ điều hành 32 bit, bạn sẽ không nhận được giá trị thời gian mong muốn

Tuy nhiên, nếu bạn có Hệ điều hành 64 bit, bạn có thể nhân đầu ra của hàm microtime[true] với 1000000 để có được thời gian hiện tại tính bằng micro giây

– Ví dụ mã hóa

Chẳng hạn, bạn đã tạo một chương trình gọi hai hàm với chênh lệch thời gian là năm giây. Bây giờ, bạn muốn xem có bao nhiêu micro giây đã trôi qua giữa hai lần gọi hàm. Bạn sẽ cần sử dụng hàm microtime[true] và nhân đầu ra của cùng một hàm với 1000000 tại thời điểm gọi hàm đầu tiên. Tiếp theo, bạn sẽ lặp lại quy trình tương tự trong khi thực hiện chức năng thứ hai

Cuối cùng, bạn sẽ trừ đi thời gian ghi lại thứ hai từ lần đầu tiên để có được thời gian đã trôi qua tính bằng micrô giây như được thấy trong đoạn mã bên dưới

Bạn sẽ nhận được đầu ra trông giống như thế này

Từ 'Timing' đã được thay thế sau 5015866 micro giây để nhận được chuỗi con

Định dạng đầu ra

Bạn có thể định dạng kết quả microtime PHP theo cách sao cho “micro giây là giây” theo sau “giây” mà không có dấu chấm và khoảng trắng không? . preg_replace[] function to format the output generated by the microtime in PHP.

– Ví dụ mã hóa

Giả sử bạn có một yêu cầu về thời gian trong chương trình của mình. Yêu cầu này có giá trị thời gian giống như yêu cầu do hàm microtime PHP tạo ra, nhưng bạn không được phép thêm dấu chấm và khoảng trắng. Bạn sẽ cần sử dụng hàm preg_replace[] bằng cách chuyển “/[0]. [d+] [d+]/” và chuỗi thay thế “$3$1$2” cùng với đầu ra của hàm microtime PHP

Ngoài ra, vui lòng xem mã hiển thị ở đây để triển khai ví dụ trên

Bạn sẽ nhận được kết quả tương tự như thế này sau khi thực hiện đoạn mã trên

0. 18196800 1642435234
1642435234018196800

Các hàm thời gian PHP Chỉ trả về thời gian tính bằng giây

Không còn nghi ngờ gì nữa, hàm microtime của PHP cho kết quả khá khả quan. Nhưng nếu bạn chỉ quan tâm đến thời gian hiện tại tính bằng giây, thì hàm time[] cũng có thể là một lựa chọn tốt. Hàm đã nêu trả về thời gian hiện tại tính bằng giây mà không tính đến micro giây.

Bạn có thể sử dụng nó như thế này. thời gian[] .

– Ví dụ mã hóa

Hãy tưởng tượng rằng bạn muốn xem bao nhiêu giây đã trôi qua kể từ Kỷ nguyên Unix “Ngày 1 tháng 1 năm 1970 00. 00. 00 giờ GMT. ” Ngoài ra, bạn muốn so sánh kết quả của hàm microtime[true] và time[]. Vì vậy, sẽ không có ý tưởng nào tốt hơn là gọi cả hai chức năng cùng lúc để quan sát sự khác biệt trong kết quả thu được

Bạn có thể sao chép và dán đoạn mã đã cho để biết thời gian hiện tại của mình tính bằng giây bằng cách sử dụng các hàm microtime[true] và time[]

Cho đến khi bạn thử đoạn mã trên, bạn có thể nhận thấy sự khác biệt trong kết quả đầu ra tại đây

Kết quả của hàm time[]. 1642432244
Kết quả của hàm microtime[true]. 1642432244. 2976

Phần kết luận

Tổng kết bài viết, bạn đã thành thạo cách sử dụng hàm microtime trong PHP cùng với cách sử dụng kết xuất của hàm tương tự để tạo ra các kết quả khác nhau. Bây giờ, đã đến lúc xem qua tất cả các chi tiết quan trọng để đảm bảo rằng bạn không kết hợp bất kỳ khái niệm nào

  • Hàm microtime PHP trả về dấu thời gian Unix hiện tại ở định dạng “microseconds_as_seconds seconds”
  • Microtime[true] có thể được sử dụng để lấy dấu thời gian Unix hiện tại sau vài giây
  • Bạn có thể tăng số chữ số được trả về bởi microtime[true] bằng cách tăng giá trị của lệnh precision
  • Bạn có thể nhân đầu ra của microtime[true] với 1000 để có thời gian hiện tại tính bằng mili giây
  • Bạn có thể lấy thời gian hiện tại tính bằng micro giây bằng cách nhân kết quả của microtime[true] với 1000000

Không còn nghi ngờ gì nữa, các chương trình PHP khác nhau có các yêu cầu về thời gian khác nhau. Nhưng các nhiệm vụ sẽ không khó xử lý khi bạn đã hiểu rõ các khái niệm liên quan

5/5 - [19 phiếu bầu]

Vị trí là tất cả

Vị trí là tất cả. Tài nguyên Go-To của bạn để Tìm hiểu & Xây dựng. CSS, JavaScript, HTML, PHP, C++ và MYSQL

Chủ Đề