Tại sao quá trình cập nhật bị kẹt?
Bạn nhấn 'Cập nhật ngay,' màn hình nhấp nháy, và rồi mọi thứ đóng băng. Có lẽ Wi-Fi của bạn bị ngắt trong tích tắc hoặc máy chủ của bạn chạm giới hạn xử lý 30 giây. Giờ đây, bạn gặp phải một thông báo cứng đầu: Another update is currently in progress. Ngay cả sau khi chờ 20 phút, thông báo vẫn không biến mất. Bạn đang bị kẹt trong trạng thái bảo trì lấp lửng.
Cơ chế đằng sau việc khóa cập nhật
Hãy coi lỗi này như một chốt an toàn. WordPress ngăn nhiều bản cập nhật chạy cùng lúc để tránh hỏng cơ sở dữ liệu hoặc làm lỗi trang web. Khi quá trình cập nhật bắt đầu, hệ thống sẽ thêm một bản ghi có tên core_updater.lock vào bảng wp_options. Thông thường, WordPress sẽ tự động xóa dòng này ngay khi cập nhật hoàn tất. Tuy nhiên, nếu quá trình bị treo hoặc hết thời gian chờ (timeout), bản ghi này vẫn còn đó. WordPress nhìn thấy nó, cho rằng một bản cập nhật vẫn đang hoạt động và chặn mọi nỗ lực mới.
Giải pháp 1: Dọn dẹp cơ sở dữ liệu thủ công
Can thiệp trực tiếp để xóa khóa thủ công là cách sửa lỗi đáng tin cậy nhất. Bạn có thể thực hiện việc này qua terminal hoặc giao diện web như phpMyAdmin.
Cách A: Sử dụng dòng lệnh MySQL
Nếu bạn có quyền truy cập SSH, đây là con đường nhanh nhất. Đăng nhập vào cơ sở dữ liệu và chạy một truy vấn xóa nhanh.
# Truy cập MySQL
mysql -u your_username -p
# Chuyển sang cơ sở dữ liệu của trang web
USE your_wordpress_db;
# Xác nhận khóa tồn tại
SELECT * FROM wp_options WHERE option_name = 'core_updater.lock';
# Xóa khóa
DELETE FROM wp_options WHERE option_name = 'core_updater.lock';
Mẹo: Đừng quên thay đổi wp_ bằng tiền tố tùy chỉnh của bạn (ví dụ: site77_) nếu bạn đã thay đổi nó khi cài đặt để bảo mật.
Cách B: Sử dụng phpMyAdmin
- Mở phpMyAdmin từ bảng điều khiển hosting của bạn (cPanel, Plesk, v.v.).
- Chọn cơ sở dữ liệu WordPress từ danh sách bên trái.
- Nhấp vào tab SQL ở phía trên màn hình.
- Dán lệnh này và nhấp vào Go:
DELETE FROM wp_options WHERE option_name = 'core_updater.lock';
## Giải pháp 2: Sử dụng WP-CLI
Bạn thích sử dụng terminal? Nếu đã cài đặt WP-CLI, bạn có thể bỏ qua hoàn toàn SQL thuần. Lệnh này sẽ xác định và xóa tùy chọn chỉ trong một bước.
Di chuyển đến thư mục gốc WordPress
cd /var/www/html
Xóa tùy chọn khóa
wp option delete core_updater.lock
Nếu thành công, bạn sẽ thấy thông báo: `Success: Deleted 'core_updater.lock' option.`
## Giải pháp 3: Sử dụng Plugin (Không cần dùng code)
Nếu việc đụng chạm vào cơ sở dữ liệu làm bạn lo lắng, hãy để plugin xử lý. Plugin 'Fix Another Update In Progress' được xây dựng cho chính kịch bản này.
- Truy cập **Plugins > Add New**.
- Tìm kiếm cụm từ "Fix Another Update In Progress."
- Cài đặt và kích hoạt nó.
- Vào **Settings > Fix Another Update In Progress**.
- Nếu phát hiện có khóa, hãy nhấp vào nút để xóa nó.
- Xóa plugin sau khi hoàn tất để giữ cho trang web của bạn nhẹ nhàng.
## Xác minh: Quay lại công việc
Sau khi khóa đã được xóa, hãy quay lại **Dashboard > Updates**. Thông báo lỗi sẽ được thay thế bằng các nút cập nhật tiêu chuẩn. Hãy thử chạy lại bản cập nhật. Nếu lỗi quay trở lại ngay lập tức, máy chủ của bạn có khả năng đang chạm giới hạn `max_execution_time`, khiến quá trình cập nhật thất bại và khóa lại cơ sở dữ liệu mỗi lần.
## Cách ngăn chặn tình trạng hết thời gian chờ trong tương lai
Hầu hết các host chia sẻ (shared hosts) giới hạn các tác vụ PHP ở mức 30 hoặc 60 giây. Các bản cập nhật lõi lớn thường cần nhiều thời gian hơn để giải nén và di chuyển các tệp. Để ngăn điều này xảy ra lần nữa, hãy tăng giới hạn thực thi trong tệp `.htaccess` hoặc `php.ini` của bạn:
Thêm dòng này vào .htaccess
php_value max_execution_time 300
Hoặc cập nhật tệp php.ini của bạn
max_execution_time = 300
Đặt giá trị này thành 300 giây (5 phút) sẽ giúp WordPress có đủ thời gian để hoàn tất ngay cả những bản cập nhật nặng nhất.

