Hướng dẫn dùng sleep c trong PHP

Có những lúc trong công việc lập trình ta cần mã tạm dừng theo một thời gian định trước thì trong php có hỗ trợ hàm sleep để các bạn làm điều này.

Mục lục

    Hàm sleep

    Tạm dừng trình dịch PHP trong thời gian định sẵn

    Cú pháp

    int sleep ( int $seconds )

    Tham số $seconds chỉ số giây tạm đừng

    hàm trả về false nếu không thành công

    Ví dụ:



    Tags: Hàm sleep trong PHPSleep trong PHPhàm tạm dừng PHPDelay trong PHP


    Có những lúc trong công việc lập trình ta cần mã tạm dừng theo một thời gian định trước thì trong php có hỗ trợ hàm sleep để các bạn làm điều này.

    Mục lục

      Hàm sleep

      Tạm dừng trình dịch PHP trong thời gian định sẵn

      Cú pháp

      int sleep ( int $seconds )

      Tham số $seconds chỉ số giây tạm đừng

      hàm trả về false nếu không thành công

      Ví dụ:



      Tags: Hàm sleep trong PHPSleep trong PHPhàm tạm dừng PHPDelay trong PHP


      Có những lúc trong công việc lập trình ta cần mã tạm dừng theo một thời gian định trước thì trong php có hỗ trợ hàm sleep để các bạn làm điều này.

      Mục lục

        Hàm sleep

        Tạm dừng trình dịch PHP trong thời gian định sẵn

        Cú pháp

        int sleep ( int $seconds )

        Tham số $seconds chỉ số giây tạm đừng

        hàm trả về false nếu không thành công

        Ví dụ:



        Tags: Hàm sleep trong PHPSleep trong PHPhàm tạm dừng PHPDelay trong PHP


        Có những lúc trong công việc lập trình ta cần mã tạm dừng theo một thời gian định trước thì trong php có hỗ trợ hàm sleep để các bạn làm điều này.

        Mục lục

          Hàm sleep

          Tạm dừng trình dịch PHP trong thời gian định sẵn

          Cú pháp

          int sleep ( int $seconds )

          Tham số $seconds chỉ số giây tạm đừng

          hàm trả về false nếu không thành công

          Ví dụ:



          Tags: Hàm sleep trong PHPSleep trong PHPhàm tạm dừng PHPDelay trong PHP


          Phương thức __sleep() và __wakeup() không được nhắc đến nhiều nhưng với dự án lớn thì sẽ cần thiết. Tài liệu tiếng việt không nói rõ nhiều về hai phương thức này chỉ còn cách xem diễn giải từ tài liệu nước ngoài, bài viết này sẽ giới thiệu về ý nghĩa và cách sử dụng của hai phương thức trên.

           __sleep() được thực thi khi đối tượng được lưu tạm thời thành chuỗi với hàm serialize(), phương thức sẽ trả về mảng các với các phần tử là các thuộc tính sẽ được lưu vào chuỗi với hàm serialize()

          __wakeup() được thực thi khi hàm unserialize được gọi, phương thức sẽ phục hồi lại đối tượng được lưu trong chuỗi trả về từ hàm serialize()

          Sau đây chúng ta sẽ tìm hiểu cách sử dụng từ ví dụ sau:

          Tạo file student.class.php

          class Student{
             private $full_name='';
             private $score = 0;
             private $grades = array();
             public function __construct($full_name, $score, $grades){
                  $this->full_name = $full_name;
                  $this->grades = $grades;
                  $this->score = $score;
             }
             public function show(){
                  echo $this->full_name;
                  print_r( $this->grades);
             }
             function __sleep(){
                  echo 'Going to sleep...';
                  return array('full_name', 'grades', 'score');
             }
             function __wakeup(){
                  echo 'Waking up ...';
             }
          }

          Ở trên __sleep() trả về mảng với 3 tham số là 3 thuộc tính sẽ được lưu tạm thời với hàm serialize()

          Tạo file a.php khởi tạo đối tượng, chạy hàm serialize và lưu chuỗi thông tin vào file string.txt

          include 'student.class.php';
          $student = new Student('Ngo Van Khuong','a',array('a'=>90,'b'=>100));
          $student->show();
          $s = serialize($student);
          file_put_contents('string.txt',$s);

          Chạy file trên trong trình duyệt chúng ta sẽ nhận được "Ngo Van KhuongArray ( [a] => 90 [b] => 100 ) Going to sleep...",  ta thấy phương thức __sleep() đã được thực thi

          Tạo file b.php để phục hồi phương thức từ chuỗi tạm thời

          include 'student.class.php';
          $s = file_get_contents('string.txt');
          $a = unserialize($s);
          $a->show();

          Chạy file trên trong trình duyệt chúng ta sẽ nhận được "Waking up ...Ngo Van KhuongArray ( [a] => 90 [b] => 100 )", ta thấy đối tượng đã được phục hồi và phương thức __wakeup đã được thực thi.

          Tham khảo php.net

          Giống như các ngôn ngữ khác, PHP sleep () cũng được sử dụng để tạm dừng thực thi chương trình trong một khoảng thời gian cụ thể. Thời gian ngủ này có thể được kiểm soát bởi một tham số, gửi như một đối số cho hàm này.

          PHP sleep () chỉ chấp nhận một và đối số bắt buộc biểu thị khoảng thời gian, vì lý do gì, việc thực thi mã PHP gọi hàm này nên bị tạm dừng. Tham số này phải ở kiểu dữ liệu số nguyên.

          Và giá trị số nguyên này chỉ định số giây được truyền trong khi đưa chương trình vào chế độ ngủ.

          Một số ngôn ngữ như Javascript, không có các chức năng trực tiếp như sleep, mọi người có thể có được hoạt động ngủ bằng cách sử dụng một vòng lặp, yêu cầu XMLHTTP, v.v. Và đôi khi, những người mới làm quen với PHP cũng có thể sử dụng các vòng lặp PHP để giữ việc thực thi chương trình trong một thời gian, với lượng thời gian cần thiết tính bằng giây.

          Điều này sẽ được thực hiện bởi rất nhiều công việc, chẳng hạn như sử dụng các hàm ngày / giờ để lấy dấu thời gian hiện tại và thao tác chúng để đặt giới hạn cho các vòng lặp đang chạy để cho phép chương trình chờ thực thi vòng lặp và do đó mô phỏng giấc ngủ ().

          Hãy để chúng tôi có một chương trình ví dụ PHP với hàm sleep () tạm dừng thực thi với lượng thời gian được chỉ định.

          Putting into sleep at: " . date("H:i:s") . "
          "; sleep($sleep_time); echo "waked up after $sleep_time seconds. Current Time is: " . date("H:i:s") . "
          "; ?>

          Trong chương trình trên, chúng tôi đã sử dụng trình tạo số ngẫu nhiên PHP, hàm rand (), để chọn ngẫu nhiên một số giây, chương trình sẽ được đưa vào chế độ ngủ. Đối với điều đó, phạm vi được chỉ định từ 5 đến 10 giây với hàm rand ().

          Trước khi gọi giấc ngủ với một khoảng thời gian được chọn ngẫu nhiên, chúng tôi đã in thời gian và lặp lại tương tự, sau khi hoàn tất giấc ngủ. Chương trình sẽ hiển thị thời gian ở định dạng (Giờ: Phút: Giây), trước và sau chức năng sleep (), đồng thời, nó sẽ hiển thị số giây chương trình bị tạm dừng bằng cách sử dụng sleep (). Và kết quả đầu ra sẽ như hình bên dưới.

          Putting into sleep at: 16:09:02
          waked up after 5 seconds. Current Time is: 16:09:07
          
          

          Các hàm liên quan trong PHP đang tạm dừng thực thi

          Có ba hàm khác liên quan đến các hoạt động tạm dừng thực thi chương trình PHP. Các hàm này khác với hàm sleep () về đơn vị thời gian mà tham số của các hàm này được truyền.

          Các chức năng này được liệt kê bên dưới.

          1. usleep () – Hàm này chấp nhận micro giây thay vì nhận giây cho hàm sleep ().
          2. time_nanosleep () – Không giống như sleep () và usleep (), hàm này nhận tham số thời gian với đơn vị là giây và nano giây.
          3. time_sleep_until () – hàm PHP này sẽ nhận giá trị dấu thời gian sắp tới với kiểu dữ liệu float để biểu thị thời gian cho chế độ ngủ. Vì dấu thời gian là dấu nổi, chúng tôi có thể gửi giá trị này với độ chính xác micro giây.

          Thận trọng:

          Danh sách sau đây về điểm cần lưu ý khi viết các chương trình ngủ PHP. Những điểm này được sử dụng để nhận biết về bất kỳ lỗi hoặc thông báo cảnh báo nào có thể gây ra trong khi gọi các hàm ngủ PHP.

          • Nếu chúng ta gửi các giá trị âm đến các hàm sleep trong PHP, thì nó sẽ hiển thị thông báo lỗi cảnh báo cho trình duyệt, như sau.
            Warning: sleep(): Number of seconds must be greater than or equal to 0
            
          • Ngoài ra, việc gửi các đối số có kiểu dữ liệu khác ngoại trừ giá trị số nguyên sẽ gây ra lỗi cảnh báo PHP, như,
            Warning: sleep() expects parameter 1 to be long
            
          • Trong khi sử dụng hàm time_sleep_until (), nếu chúng ta không chỉ định dữ liệu tạm thời sắp tới, thay vì chuyển dấu thời gian cũ, thì hàm này sẽ gây ra thông báo cảnh báo.

          ↑ Quay lại đầu trang