WPML
Trạng thái
Đã giải quyết
Đã giải quyết trong
2.3.8

Tổng quan về lỗi

Kể từ phiên bản 2.3.0 của plugin WPML Media Translation, bạn có thể dịch và đồng bộ hóa phương tiện giữa các bản dịch.

Là một phần của quá trình thiết lập (cũng chạy khi bạn di chuyển từ một phiên bản cũ hơn), WPML Media sẽ quét toàn bộ trang web để tìm các URL phương tiện được sử dụng trong nội dung.

Việc gắn cờ các bài viết có chứa phương tiện sẽ giúp ích về sau, do đó, trong một số sự kiện nhất định liên quan đến dịch phương tiện (chẳng hạn như dịch một bài viết phương tiện cụ thể), chỉ những bài viết thực sự bao gồm phương tiện mới được quét nhằm cập nhật nội dung với phương tiện đã dịch.

Tuy nhiên, đối với các trang web rất lớn, quá trình thiết lập có thể gây ra một số áp lực lên cơ sở dữ liệu khiến toàn bộ quá trình chậm hơn dự kiến.

Phần lớn, sự quá tải này là do các truy vấn cần thiết để xác định các ID tệp đính kèm dựa trên URL. Thông thường, ID tệp đính kèm có thể được xác định từ các thuộc tính của thẻ HTML (ví dụ: id=”attachment_8” – ở đây, 8 là ID của tệp đính kèm). Khi thuộc tính như vậy không được sử dụng, WPML Media sẽ xác định ID từ URL thực tế. Trong trường hợp này, hai loại truy vấn được sử dụng:

  • Một truy vấn khớp với trường ‘guid’ trong bảng wp_posts
  • Một truy vấn khác khớp với các trường meta_value của bảng wp_postmeta.

Tuy nhiên, không có trường nào trong số các trường bảng này được lập chỉ mục theo mặc định. Vì đây là khớp văn bản (ngay cả khi không phải là tìm kiếm một phần văn bản), nên đối với các cơ sở dữ liệu lớn, quá trình này có thể diễn ra chậm.

Giải pháp tạm thời

Một cách để giải quyết vấn đề này là (ít nhất là tạm thời) thêm các chỉ mục cho các trường này.
Bạn có thể thực hiện việc này bằng cách sử dụng hai truy vấn SQL như sau:

ALTER TABLE `wp_posts` ADD INDEX `guid` (`guid`); ALTER TABLE `wp_postmeta` ADD INDEX `meta_value` (`meta_value`(512));

Những bổ sung này sẽ không gây ra bất kỳ tác dụng phụ nào đối với cơ sở dữ liệu của bạn, ngoại trừ việc làm cho kích thước vật lý của cơ sở dữ liệu trên đĩa lớn hơn một chút. Nếu bạn muốn hoàn tác chúng sau khi chạy thiết lập Phương tiện của WPML, bạn có thể thực hiện bằng cách sử dụng hai truy vấn MySQL sau:

ALTER TABLE `wp_posts` DROP INDEX `guid`; ALTER TABLE `wp_postmeta` DROP INDEX `meta_value`;

Lưu ý: tiền tố wp_ cho các bảng được đề cập trong các truy vấn có thể khác nhau tùy theo cấu hình WordPress của bạn. Thông thường và theo mặc định, nó là wp_

Ví dụ nghiên cứu điển hình: trên một trang web có khoảng 140.000 tệp đính kèm và khoảng 5.000 bài viết, quá trình thiết lập có thể mất hơn 30 phút để hoàn thành. Sau khi thêm các chỉ mục, quá trình thiết lập chạy trong vài phút. Các thử nghiệm được thực hiện trên một môi trường phát triển thông thường. Những giá trị này thậm chí có thể thuận lợi hơn trên một máy chủ chính thức thực tế.

Tất cả các lỗi đã ghi nhận →