WP-Cron là một phần của WordPress xử lý các sự kiện đã lên lịch trong một trang WordPress. Vậy chi tiết hơn thì WP-Cron là gì? Làm sao để disable WP-Cron cho hiệu suất nhanh hơn?
WP-Cron là gì?
Cron job được sử dụng để lên lịch các công việc vào khoảng thời gian cố định trên trang web WordPress. Một số ví dụ về WordPress cron job có thể liên quan đến việc đăng bài, kiểm tra bản cập nhật hay các backup plugin chạy theo lịch định sẵn.
Trong WordPress, việc này được xử lý bởi WP-Cron. Nó được sử dụng để mô phỏng một cron system. Tuy nhiên còn tùy thuộc vào lưu lượng truy cập trang web của bạn. Việc sử dụng trình xử lý cron tích hợp có thể ảnh hưởng đến thời gian tải trang. Vì vậy các hướng dẫn sau sẽ hướng dẫn cách disable wp-cron (wp-cron.php
). Va thay vào đó là sử dụng cron system để đạt hiệu suất nhanh hơn.
- Vấn đề về hiệu suất với WP-Cron.
- Cách tắt WP-Cron.
- Làm thế nào để sử dụng Cron system.
Cách thức hoạt động của WP-Cron?
WP-Cron muốn vận hành ổn định, nó phải thực thi thường xuyên nhưng không đồng nghĩa với phải thực hiện liên tục mỗi phút. Nhưng, hành vi mặc định không yêu cầu người dùng thiết lập cron job cấp hệ thống thực trên máy chủ của người dùng.
Nó dùng cách thức piggyback ở tất cả yêu cầu được đưa đến. Khi website nhận được yêu cầu đưa đến, WordPress sẽ tạo thêm một yêu cầu mới từ chính nó tới tệp wp-cron.php thông qua HTTP(S).
Vì sao để cấu hình mặc định cho wp-cron.php lại là sai lầm?
Phương pháp mặc định làm việc rất có lợi đối với những website nhỏ với số lượng người dùng truy cập mỗi giờ thấp. Nhưng khi nó được tiến hành ở những website vừa hoặc lớn trở lên hay là một website được rà soát bởi bot (hiện nay việc này ngày càng trở nên thông dụng). Đồng nghĩa với việc người dùng nhận được gấp đôi bất kỳ lưu lượng truy cập nào mà người dùng đang tiến hành xử lý.
Đặc biệt, nó cũng sẽ biến thành một cuộc DDoS quy mô nhỏ gây hại đến chính người dùng. Nguyên nhân là do cron đang tiến hành thao tác nhiều lần một phút qua HTTP request (tức là yêu cầu HTTP). Yêu cầu HTTP phát sinh chi phí thông qua việc tạo, trao đổi và tùy chỉnh kết nối bằng socket mạng.
Ngoài ra, dung lượng hiệu quả của máy chủ web bên dưới của bạn cũng sẽ bị ảnh hưởng. Giải pháp này được nhận xét rằng chưa thật sự tối ưu vì nó không hoạt không tốt trong mọi tình huống. Đặc biệt, có thể loại bỏ làm hành vi mặc định vì những lý do như: có thể trở thành vector tấn công tại máy chủ chỉ với lưu lượng truy cập bình thường. Ngoài ra, hành vi mặc định này đang có xu hướng bị lạm dụng.
Có lựa chọn nào để thay thế WP-Cron?
Ở thời điểm hiện tại, lựa chọn tối ưu nhất là cấu hình cronjob hệ thống là thực thi tập lệnh wp-cron.php
trực tiếp bằng code PHP mỗi phút. Lựa chọn này sẽ đảm bảo rằng tất cả các tác vụ đã lên lịch sẽ được thực hiện vào đúng thời gian đã định sẵn.
Bên cạnh đó, nó nên ưu tiên thực hiện trực tiếp PHP để ảnh hưởng đến dung lượng của máy chủ web và phát sinh chi phí của bộ nhớ trên lớp mạng như lúc thực thi qua yêu cầu HTTP.
Vấn đề về hiệu suất với WP-Cron là gì?
Hiện nay, có khá nhiều vấn đề về hiệu suất với trình xử lý Cron tích hợp sẵn trong WordPress: WP-Cron. Điều quan trọng trước tiên là phải hiểu rõ WP-Cron là gì. WP-Cron không phải là một Cron job thật sự. Nó chỉ đơn giản là những gì WordPress tạo ra để bắt chước những gì một Cron system làm.
WP-Cron không làm việc liên tục. Theo mặc định, wp-cron.php
sẽ được bật sau mỗi lần tải trang. Điều này sẽ gây ra sự cố nếu bạn đang ở trên các trang web có lưu lượng truy cập lớn. Với một trang web không đủ PHP worker, đôi khi một số yêu cầu sẽ xuất hiện. Khi đó, WordPress sẽ tạo ra Cron.
Ngược lại, nếu một trang web với ít lưu lượng truy cập, lịch được để sẵn có thể bị bỏ qua do không có ai tải lại trang.
Một cách tốt hơn là disable WP-Cron và thay vào đó là sử dụng Cron system. Điều này có lịch trình xác định và thậm chí còn được đề xuất trong Pugin offcial handbook.
Cách disable WP-Cron là gì?
Vậy cách disable WP-Cron là gì? Để disable WP-Cron, hãy thêm phần sau vào file wp-config.php
ngay trước dòng “That’s all, stop editing! Happy blogging“.
Lưu ý: Việc này chỉ ngăn WP-Cron chạy khi bạn load trang. WP-Cron vẫn có thể chạy nếu ta gọi nếu trực tiếp bằng wp-cron.php
.
define('DISABLE_WP_CRON', true);
Làm thế nào để lên lịch cho Cron system bằng cPanel?
Nếu host bạn sử dụng có cPanel, bạn có thể tạo cron system từ control panel. Lưu ý: trước tiên hãy đảm bảo bạn đã tắt WP-Cron mặc định.
Bước 1: Đăng nhập vào cPanel. Trong mục Advanced, nhấp chọn Cron Jobs.
Bước 2: Trong mục thêm Cron Job, bạn có thể chọn một số thời gian biểu khác nhau, chẳng hạn như hai lần một giờ hoặc một lần một tuần. Nhà cung cấp dịch vụ sẽ giới hạn về tần suất cho phép chạy các cron job. Hai lần mỗi giờ là cài đặt phổ biến cho các máy chủ.
Bước 3: Thêm lệnh sau. Thay thế https://domain.com bằng tên miền của bạn. Sau đó nhấp vào “Add New Cron Job”
wget -q -O - https://domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Phần >/dev/null 2>&1
của lệnh trên sẽ tắt thông báo qua email.
Lời kết
Bài viết bên trên đã hướng dẫn chi tiết về WP-Cron là gì và cách để sử dụng nó. Việc sử dụng WP-Cron và Cron job giúp bạn quản lý trang của mình tốt hơn, cải thiện năng suất làm việc hơn. Nếu có bất kỳ thắc mắc nào bạn có thể để ở dưới phần bình luận để Vietnix giải đáp các thắc mắc của bạn. Cảm ơn bạn đã theo dõi bài viết.
nếu hosting có nhiều site thì mối siet phải làm riêng đúng ko? (dù chúng đều chung 1 folder)
Cài plugin này vào và activate là xong: https://wordpress.org/plugins/fastcron/
Hoàn toàn miễn phí, không cần đăng ký.