Trong hầu hết các hội thảo Magento nặng, hầu như rất khó để Quản lý Chỉ mục phụ trợ Magento hoạt động. Tôi đã có vấn đề này thường xuyên. Chạy kịch bản shell mọi lúc bởi nhà phát triển thường rất bận rộn. Thông thường tôi khắc phục vấn đề này vĩnh viễn như thế này.
Tôi tạo một bản sao mới của shell / indexer.php> shell / myindexer.php
Tùy chỉnh shell / myindexer.php một số xung quanh dòng 154
} else if ($this->getArg('reindex') || $this->getArg('reindexall')) {
Đến
} else if ($this->getArg('reindex') || $this->getArg('reindexall') || $this->getArg('reindexallrequired') ) {
và, thêm kiểm tra này xung quanh dòng 166
//reindex only if required
if( $this->getArg('reindexallrequired') && $process->getStatus() == Mage_Index_Model_Process::STATUS_PENDING )
continue;
trước
$startTime = microtime(true);
$process->reindexEverything();
$resultTime = microtime(true) - $startTime;
Mage::dispatchEvent($process->getIndexerCode() . '_shell_reindex_after');
Và sau đó tôi thêm tập lệnh shell mới vào cpanel cron để chạy sau mỗi 5 phút
/home/public_html/shell/indexer.php --reindexallrequired >/dev/null
Vì shell script chạy trên cứ sau 5 phút và nó chỉ giới thiệu lại các quy trình yêu cầu reindexing, nó giảm nguy cơ tải nặng cho cpu máy chủ cũng như toàn bộ quá trình reindexing rất nhanh. Nếu không có quy trình yêu cầu reindexing, đơn giản là nó sẽ không chạy quy trình reindexing. Ngoài ra, hãy nhớ đặt chế độ reindexing thành "Cập nhật khi lưu" trong trang Quản lý chỉ mục. Nếu bạn không biết, bạn có thể nhận tùy chọn này trong Hành động> Thay đổi chế độ chỉ mục bên cạnh nút Gửi.