magento 分類保存產品數量瓶頸

php.ini 有個值 max_input_vars 默認是 1000
可能和版本有關,我的(php 5.5)是 2500

變量的解釋是:
How many GET/POST/COOKIE input variables may be accepted

所以他導致的問題是 最多能接受 1000個變量
同理適用於 函數 parse_str(string,array)

<?php
parse_str("name=Bill&age=60",$myArray);
print_r($myArray);
?>

而magento 後臺在分類頁 將產品分到某個分類下就是採用了 parse_str 的方法
由此產生的問題就是 最多能將某個分類保存 1000或者1001 個產品。再多了 就會報錯

Warning: parse_str(): Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini.
in /app/code/core/Mage/Adminhtml/controllers/Catalog/CategoryController.php on line 310

所以最直接的解決辦法是 增大 max_input_vars 的值
但是 始終會有瓶頸。

更改程序

修改 文件:

app\code\core\Mage\Adminhtml\controllers\Catalog\CategoryController.php 的函數 saveAction()

其中一段 if 程序修改爲:

“`
if (isset(data['category_products']) && ! category->getProductsReadonly()) {
products=array(); exploded = explode('&', $data[‘category_products’]);

foreach ($exploded as $row) {
    $temp = array();
    parse_str($row, $temp);
    list($key, $value) = each($temp);
    if(!empty($key)) {
        $products[$key] = $value;
    }
}

$category->setPostedProducts($products);

}

相信你可以知道修改的程序具體位置在哪裏 :)“`

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章