Câu trả lời rõ ràng là CÓ, tôi nên lo lắng . Sau một số nghiên cứu, tôi thấy rằng cảnh báo dường như có liên quan đến cấu hình sai trên máy chủ mà WordPress được lưu trữ trên (ví dụ: sự cố với máy chủ của tôi, không phải WordPress).
Cấu hình sai phổ biến:
- Máy chủ không có DNS và do đó, nó không thể tìm ra "example.com" là ai, mặc dù chính nó là.
- Các quản trị viên máy chủ, trong một nỗ lực sai lầm về bảo mật, đã chặn các yêu cầu "loopback", do đó, nó thực sự không thể thực hiện cuộc gọi lại cho chính nó.
- Máy chủ đang chạy một cái gì đó gọi là "mod_security" hoặc tương tự, chủ động chặn cuộc gọi do cấu hình chết não.
Vấn đề trong trường hợp của tôi thực sự là do tường lửa của tôi (pfSense), do "Vô hiệu hóa phản xạ NAT" theo mặc định (được liệt kê là lý do phổ biến # 2).
Trên chính máy chủ, tôi đã cố gắng tiếp cận bản thân bằng telnet và kết quả như sau:
$ telnet bên ngoài.server.hostname.com 19235
Đang dùng thử XXX.XXX.XXX.XXX ...
telnet: Không thể kết nối với máy chủ từ xa: Đã hết thời gian kết nối
Để khắc phục điều này, tôi phải bỏ chọn Vô hiệu hóa phản chiếu NAT trên tường lửa của mình. Trong trường hợp của tôi, đây là trong giao diện web của pfSense trong System-> Advanced-> Firewall / NAT.
Nguồn: http://forum.pfsense.org/index.php?topic=3473.0
Bây giờ tôi có thể kết nối với chính mình (trên chính máy chủ) thông qua tường lửa tốt:
$ telnet bên ngoài.server.hostname.com 19235
Đang dùng thử XXX.XXX.XXX.XXX ...
Đã kết nối với bên ngoài.server.hostname.com.
Nhân vật thoát là '^]'.
và tôi không còn nhận được cảnh báo PHP về wp-cron.
Tôi đã tìm ra điều này sau khi đọc câu trả lời chi tiết này liên quan wp_cron
, giải thích cách nó hoạt động.
Câu trả lời ngắn: Thêm phần này vào định nghĩa trong tệp wp-config.php của bạn: xác định ('ALTERNATE_WP_CRON', true);
Câu trả lời thực sự dài, đối với những người bạo dâm: Bài viết theo lịch trình không phải bây giờ, và chưa bao giờ, "bị hỏng". Các nhà phát triển của WordPress không thể sửa nó vì không có gì để sửa.
Vấn đề nằm ở chỗ, máy chủ của bạn, vì một số lý do, không thể thực thi đúng quy trình wp-cron. Quá trình này là cơ chế thời gian của WordPress, nó xử lý tất cả mọi thứ từ các bài đăng được lên lịch để gửi pingback đến các lệnh ping XML, v.v.
Cách thức hoạt động khá đơn giản. Bất cứ khi nào một trang WordPress tải, WordPress nội bộ sẽ kiểm tra xem nó có cần tắt wp-cron hay không (bằng cách so sánh thời gian hiện tại với lần cuối wp-cron chạy). Nếu nó không cần chạy wp-cron, thì nó sẽ cố gắng tạo kết nối HTTP trở lại chính nó, gọi tệp wp-cron.php.
Kết nối này trở lại chính nó là có lý do. wp-cron có rất nhiều việc phải làm, và công việc đó cần có thời gian. Trì hoãn người dùng nhìn thấy trang web của mình trong khi nó thực hiện một loạt các công cụ là một ý tưởng tồi, vì vậy bằng cách làm cho kết nối đó trở lại chính nó, nó có thể chạy chương trình wp-cron trong một quy trình riêng biệt. Vì bản thân WordPress không quan tâm đến kết quả của wp-cron, nên nó chỉ đợi một giây, sau đó quay lại hiển thị trang web cho người dùng. Trong khi đó, wp-cron, đã được đưa ra, sẽ hoạt động cho đến khi hoàn thành hoặc hết thời gian thực hiện.
Kết nối HTTP đó là nơi một số hệ thống được cấu hình kém không thành công. Về cơ bản, WordPress hoạt động như một trình duyệt web. Nếu trang web của bạn là
http://example.com/blog , thì WP sẽ gọi
http://example.com/blog/wp-cron.php để bắt đầu quá trình. Tuy nhiên, một số máy chủ đơn giản là không thể làm điều đó vì một số lý do. Trong số các lý do có thể:
- Server không có DNS, và vì vậy nó không thể tìm ra người "example.com" là, mặc dù nó là bản thân .
- Các quản trị viên máy chủ, trong một nỗ lực sai lầm về bảo mật, đã chặn các yêu cầu "loopback", do đó, nó thực sự không thể thực hiện cuộc gọi lại cho chính nó.
- Máy chủ đang chạy một cái gì đó gọi là "mod_security" hoặc tương tự, chủ động chặn cuộc gọi do cấu hình chết não.
- Thứ gì khác.
Vấn đề là vì bất kỳ lý do gì, máy chủ web của bạn được cấu hình theo một cách không chuẩn nào đó đang ngăn cản WordPress thực hiện công việc của mình. WordPress đơn giản là không thể khắc phục điều đó.
Tuy nhiên, nếu bạn có tình trạng này, có một cách giải quyết. Thêm phần này vào định nghĩa trong tệp wp-config.php của bạn:
xác định ('ALTERNATE_WP_CRON', đúng);
Phương pháp thay thế này sử dụng phương pháp chuyển hướng, làm cho trình duyệt người dùng có được chuyển hướng khi cron cần chạy, để họ quay lại trang web ngay lập tức trong khi cron tiếp tục chạy trong kết nối mà họ vừa bỏ. Phương pháp này đôi khi hơi iffy, đó là lý do tại sao nó không phải là mặc định.
Nguồn: http://wordpress.org/support/topic/schediated-posts-still-not-usiness-in-282#post-1175405
Như đã nêu trong bài đăng tuyệt vời và chi tiết này, nếu bạn không kiểm soát cấu hình máy chủ của mình hoặc, nếu có thể, môi trường - một cách giải quyết là đặt
xác định ('ALTERNATE_WP_CRON', đúng);
trong tập tin wp-config.php của bạn.
allow_url_fopen
đặt thành BẬT?