Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

tự động lên lịch thực thi tập lệnh php vào thời điểm cụ thể

Bạn có 3 lựa chọn. Khuyến nghị của tôi:Sử dụng cron nếu bạn có thể, do người dùng điều khiển nếu bạn phải và daemon như một phương sách cuối cùng.

(1) cron (như đã đề cập trong nhận xét)

cron là một bộ lập lịch cho các hệ thống linux sẽ chạy một công việc dòng lệnh trên hệ thống của bạn. Bạn đăng nhập vào máy chủ của mình qua ssh, gõ crontab -e và thêm một dòng như thế này:

4 5 * * * php /path/to/my/script.php

Điều này sẽ chạy tập lệnh lúc 5:04 sáng hàng ngày.

<?php
// /path/to/my/script.php

// Do something

Một số dịch vụ lưu trữ cho phép nhập cron job với GUI. Ngoài ra còn có các dịch vụ cron bên ngoài, sẽ gọi URL cho bạn vào những thời điểm cụ thể.

(2) daemon

Đây là tùy chọn nâng cao nhất và cũng kém tin cậy nhất:Bạn chạy một tập lệnh dòng lệnh có chứa một vòng lặp vô hạn. Tập lệnh sau đó định kỳ kiểm tra trạng thái và phản hồi lại trạng thái đó. Bởi vì nó có khả năng gặp sự cố sau nhiều tháng chạy, bạn phải có tập lệnh thứ hai để khởi động lại nó trong trường hợp nó xảy ra. Đây là rất nhiều công việc, nhưng nó là cách tiếp cận linh hoạt nhất.

<?php



while (1) {   

  // fetch $last_exec_timestamp from database

  if ($last_exec_timestamp < time() + 86400) {
    // set last_exec_timestamp to now in database

    // do something
  }
  sleep(5);

}

3. do người dùng điều khiển

Nếu bạn có một lượng lưu lượng truy cập tốt trên trang web của mình, bạn có thể chỉ cần đưa công việc này vào chân trang của mình, khi không còn đầu ra nữa. Đảm bảo mã này nhanh, nếu không người dùng không may mắn sẽ đợi mã này.

<?php

// fetch $last_exec_timestamp from database

if ($last_exec_timestamp < time() + 86400) {
  // set last_exec_timestamp to now in database
  // do something
}

Ngoài ra còn có các cách tiếp cận lạ mắt hơn về "hướng người dùng" mà tôi chưa thử nghiệm cá nhân trong một lỗi tràn ngăn xếp khác câu hỏi .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sqoop Nhập - hàm mật khẩu-tệp không hoạt động bình thường trong sqoop 1.4.4

  2. MySQL InnoDB Cluster 8.0 - Hướng dẫn hoạt động hoàn chỉnh:Phần thứ hai

  3. Sự cố khi sử dụng MySQL với AWS Lambda bằng Python

  4. JSON_STORAGE_SIZE () - Tìm Kích thước Lưu trữ của Tài liệu JSON trong MySQL

  5. Nhân bản GROUP_CONCAT cho gấu trúc.DataFrame