Magento 2.2.2: 792723456 बाइट्स की स्वीकृत मेमोरी साइज (184320 बाइट्स आवंटित करने का प्रयास)


11

मैं Magento 2.2.2 में काम कर रहा हूं और जब मैं उत्पाद सहेजता हूं तो यह इस त्रुटि को प्रदर्शित करेगा।

घातक त्रुटि: 792723456 बाइट्स की अनुमत मेमोरी का आकार / 153/ लाइन में /var/www/html/Demo/vendor/magento/framework/Profiler.php पर /var (184320 बाइट्स आवंटित करने का प्रयास)।

Php version : 7.0

Magento : 2.2.2

मैं भी परिवर्तन में लागू memory_limit = 16Gमें php.iniफ़ाइल और अपाचे सर्वर को पुनरारंभ करें। फिर भी, यह समस्या ठीक नहीं हुई।

<?php
namespace Abc\Xyz\Observer;

use Magento\Framework\Event\ObserverInterface;
use \Magento\Store\Model\StoreManagerInterface;

class ProductSaveAfter implements ObserverInterface
{
    protected $_objectManager;
    protected $messageManager;
    protected $_productmFactory;
    protected $_productdFactory;
    protected $_productsFactory;
    protected $_eavConfig;
    protected $sStore;
    protected $scopeConfig;
    protected $_helper;
    protected $storeManager;

    public function __construct(
        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
        \Magento\Framework\ObjectManagerInterface $objectManager,
        \Magento\Framework\App\RequestInterface $request,
        \Magento\Eav\Model\Config $eavConfig,
        \Abc\Xyz\Helper\Data $helper,
        StoreManagerInterface $storeManager,
        \Abc\Xyz\Model\productmFactory $productmFactory,
        \Abc\Xyz\Model\ProductdFactory $ProductdFactory,
        \Abc\Xyz\Model\productsFactory $productsFactory,
        \Abc\Xyz\Model\sStoreFactory $sStoreFactory,
        \Magento\Framework\Message\ManagerInterface $messageManager
    ) {
        $this->_objectManager = $objectManager;
        $this->_request = $request;
        $this->_helper = $helper;
        $this->scopeConfig = $scopeConfig;
        $this->_eavConfig = $eavConfig;
        $this->_productmFactory = $productmFactory;
        $this->_productdFactory = $ProductdFactory;
        $this->_productsFactory = $productsFactory;
        $this->sStore = $sStoreFactory;
        $this->storeManager = $storeManager;
        $this->messageManager = $messageManager;
    }
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $product = $observer->getEvent()->getProduct();
        $id = $product->getId();
        $data = $this->_request->getParams();
        $currentWebsite = $this->storeManager->getStore()->getWebsiteId();
        try
        {
            if ($id) {
                $YG14 = $this->_request->getParam('YG14');
                $YG14_size = $this->_request->getParam('YG14_size');

                $mI = $this->_productmFactory->create()->getCollection();
                $mI->addFieldToFilter('product_id', $id);
                /** Delete all records*/
                if ($YG14 != "") {
                    if (!empty($mI)) {
                        foreach ($mI as $mtl) {
                            $mI = $this->_productmFactory->create()->load($mtl->getId());
                            $mI->delete();
                        }
                    }
                }

                if ($YG14 != "") {
                    $mISave = $this->_productmFactory->create();
                    $mISave->setProductId($id);
                    $mISave->setMtlWeight($YG14);
                    $mISave->setMtlType('YG14');
                    $mISave->setSizeIncrementWeightDiff($YG14_size);
                    $mISave->save();
                }
                $dD = $this->_request->getParam('d');
                if ($dD) {
                    $dInfoDelete = $this->_productdFactory->create()->getCollection()->addFieldToFilter('product_id', $id);
                    foreach ($dInfoDelete as $key => $dia) {
                        $dInfo = $this->_productdFactory->create()->load($dia->getId());
                        $dInfo->delete();
                    }
                    foreach ($dD as $d) {
                        $dS = $this->_productdFactory->create();
                        $dS->setProductId($id);
                        if (array_key_exists('d_s', $d)) {
                            $dS->setDS($d['d_s']);
                        }
                        if (array_key_exists('d_w', $d)) {
                            $dS->setDW($d['d_w']);
                        }
                        if (array_key_exists('d_q', $d)) {
                            $dS->setDQ($d['d_q']);
                        }
                        if (array_key_exists('d_s_t', $d)) {
                            $dS->setDST($d['d_s_t']);
                        }
                        $dS->save();
                    }
                } else {
                    $deld = $this->_request->getParam('deld');
                    if ($deld != "") {
                        $delD = explode(",", $deld);
                        foreach ($delD as $delDIds) {
                            $dD = $this->_productdFactory->create()->load($delDIds);
                            $dD->delete();
                        }
                    }
                }
                $sD = $this->_request->getParam('st');
                if ($sD) {
                    foreach ($sD as $sts) {
                        $ssSave = $this->_productsFactory->create();
                        if (isset($sts['st_ids'])) {
                            $ssSave->setId($sts['st_ids']);
                        }
                        $ssSave->setProductId($id);
                        if (array_key_exists('st_c', $sts)) {
                            $ssSave->setStC($sts['st_c']);
                        }
                        if (array_key_exists('st_sett', $sts)) {
                            $ssSave->setStSett($sts['st_sett']);
                        }
                        if (array_key_exists('st_s', $sts)) {
                            $ssSave->setStS($sts['st_s']);
                        }
                        if (array_key_exists('st_w', $sts)) {
                            $ssSave->setStW($sts['st_w']);
                        }
                        if (array_key_exists('st_q', $sts)) {
                            $ssSave->setStQ($sts['st_q']);
                        }
                        $ssSave->save();
                        $sStore = $this->sStore->create();
                        $sStoreExists = $sStore->getCollection()->addFieldToFilter('st_id', $ssSave->getId())->addFieldToFilter('website_id', $currentWebsite);
                        if (!empty($sStoreExists->getData())) {
                            foreach ($sStoreExists as $value) {
                                $sStore->load($value->getId());
                                $sStore->setId($value->getId());
                                $sStore->setProductId($id);
                                $sStore->setPrice($sts['price']);
                                $sStore->save();
                            }
                        } else {
                            $sStore->setWebsiteId($currentWebsite);
                            $sStore->setProductId($id);
                            $sStore->setStId($ssSave->getId());
                            if (array_key_exists('price', $sts)) {
                                $sStore->setPrice($sts['price']);
                            }
                            $sStore->save();
                        }
                    }
                    $delSt = $this->_request->getParam('delSt');
                    if ($delSt != "") {
                        $delS = explode(",", $delSt);
                        foreach ($delS as $delSIds) {
                            $dDelete = $this->_productsFactory->create()->load($delSIds);
                            $dDelete->delete();
                        }
                    }
                } else {
                    $delSt = $this->_request->getParam('delSt');
                    if ($delSt != "") {
                        $delS = explode(",", $delSt);
                        foreach ($delS as $delSIds) {
                            $dDelete = $this->_productsFactory->create()->load($delSIds);
                            $dDelete->delete();
                        }
                    }
                }

                $prices = $this->_helper->defaultPriceCalculate($id, $product, $currentWebsite);
                $product->setWebsiteId($currentWebsite)->setPrice($prices['finalPrice']);
                if ($prices['discountedPrice'] != 0) {
                    $product->setSpecialPrice($prices['discountedPrice']);
                }
                $product->save();

            }
        } catch (\Magento\Framework\Exception\LocalizedException $e) {
            $this->messageManager->addError($e->getMessage());
        } catch (\RuntimeException $e) {
            $this->messageManager->addError($e->getMessage());
        } catch (\Exception $e) {
            $this->messageManager->addException($e, __('Something went wrong while saving the post.'));
        }
    }
}

इसे कैसे हल करें?

क्रिप्या मेरि सहायता करे।


अपना कोड दिखाएं जो आप उत्पाद बचाने के लिए उपयोग किया जाता है।
सुरेश चिकानी

आप मेमोरी साइज़ -1 पर सेट कर सकते हैं, इसलिए यह आवश्यक मेमोरी साइज़ का उपयोग करेगा, सेटिंग ini_set ('memory_limit', -1) है;
हिम्मत पालीवाल

इसे देखें @SureshChikani
रोहन हापानी

किस स्थान पर मैंने मेमोरी साइज़ -1 रखा है?
रोहन हापानी

आप इसे अपने Magento के रूट में index.php फ़ाइल में डाल सकते हैं।
हिम्मत पालीवाल

जवाबों:


34

निम्नलिखित आदेश आज़माएं:

php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
php bin/magento setup:di:compile
php bin/magento cache:flush
php bin/magento cache:clean

//To run command forcefully
php -f bin/magento

//To run command with memory limit 4G
php -d memory_limit=4G bin/magento

//To run command with max memory limit
php -d memory_limit=-1 bin/magento

यदि आप अभी भी समस्या का सामना कर रहे हैं, तो निम्न सेटिंग आज़माएं:

  1. [Magento2-रूट फ़ोल्डर] /index.php
ini_set('memory_limit',256);

OR

ini_set('memory_limit','-1');

CLI का उपयोग करके वर्तमान मेमोरी_लिमिट मान जांचें:

1. php -r "echo ini_get('memory_limit').PHP_EOL;"

2. php -i | grep memory

यदि समस्या अभी भी बनी हुई है, तो मेमोरी लिमिट बढ़ाएँ (जैसे, 2048M तक) निम्न स्थानों पर:

  1. [Magento2-रूट फ़ोल्डर] /। User.ini
memory_limit = 768M
  1. [Magento2- रूट-फ़ोल्डर] /। Htaccess (2 स्थानों)
php_value memory_limit 768M
  1. [Magento2-रूट फ़ोल्डर] /pub/.user.ini
memory_limit = 768M
  1. [Magento2- रूट-फ़ोल्डर] /pub/.htaccess (2 स्थान)
php_value memory_limit 768M

समस्या को अब तक हल किया जाना चाहिए, अगर यह अभी भी वहां है तो अपने कस्टम मॉड्यूल को अक्षम करें और फिर से जांचें।


1
उत्तम। धन्यवाद। edit .user.ini ने मेरी मदद की।
जेम्स एम।

@ जेम्स - मदद करने के लिए खुश। मदद करते रहें :)
प्रतीक ओझा

मेरे लिए बहुत उपयोगी है, मैंने इसे जोड़ा है और इस मुद्दे को हल किया है
प्रदीप गार्चर

व्याख्या महान है। इसे इस दृष्टिकोण पर रखें
जय

@PratikOza इसी तरह की त्रुटि का सामना करते हुए आपके सुझावों का उपयोग करते हुए मुझे भी इन आदेशों को चलाना चाहिए था ?? यह जांचने के लिए कि क्या यह काम कर रहा है या नहीं php bin / magento setup: static-content: तैनाती -f, php bin / magento कैश: फ्लश
अहमर सईद

7

एक त्वरित समाधान है

php -dmemory_limit=6G bin/magento setup:static-content:deploy

यह कोशिश करो, इसका मेरे लिए काम किया।


3

792723456 बाइट्स का मतलब 756 एमबी है। यह वह मूल्य है जो Magento सुझाता है और उनके नमूना विन्यास (विशेष रूप से nginx) पर डिफ़ॉल्ट है।

सब कुछ करने की कोशिश करो कि @Pratik Oza ने सुझाव दिया और मुझे दूसरी जगह जाने का संकेत दिया। क्या आप php-fpm या एक समान CGI का उपयोग कर रहे हैं? यदि ऐसा है तो कृपया मेमोरी सीमा के लिए भी जाँच करें।

मेरे मामले में मैं nginx + php-fpm का उपयोग कर रहा हूं और मैं का उपयोग करके प्रत्येक प्रोजेक्ट के लिए memory_limit सेट करता हूं

php_value [memory_limit] = [एन] एमबी

इसके अलावा अगर आप सीजीआई का उपयोग कर रहे हैं तो यह प्रयास करें। सबसे पहले अपने वेबसर्वर को रोकें फिर आपको CGI को पुनरारंभ करें और फिर अपने वेबसर्वर को फिर से शुरू करें।

एक यादृच्छिक समस्या है जिसका मुझे एक बार सामना करना पड़ा था जो मुझे ऊपर कर रहा था। अगर मैंने नहीं किया तो यह नगीनक्स सेट की तरह था, php.ini या fpm.conf पर निर्धारित मूल्यों की परवाह किए बिना php-fpm को दिए गए किसी भी चीज़ के लिए इसका अपना मान है।

संपादित करें: मैं देखता हूं कि समस्या को .user.ini के संपादन द्वारा हल किया गया था। इसका मतलब यह है कि यह वास्तव में nginx था कि एक और मूल्य पारित किया और वह भी मामला हो सकता है जिसे मैंने वर्णित किया। बस इसी ओर इशारा करते हुए। अन्य उत्तरों को पढ़ने वाले किसी भी व्यक्ति को कृपया set_init('memory_limit',-1)कभी भी ईवर का उपयोग न करें ।

मैंने अपने एक डेवलपर को mysql क्वेरी ऑप्टिमाइज़ेशन का परीक्षण करने के लिए इसका उपयोग करते हुए देखा है और स्क्रिप्ट 35gigs RAM तक पहुंच गई, जो तब तक बढ़ती रही जब तक कि मैंने इसे 10mins के बाद नहीं मार दिया। जब तक आप रनिंग पॉइंट पर नहीं जाते हैं, तब तक एक सभ्य सीमा तक मान सेट करें और इसे वहां छोड़ दें या मानों या दृष्टिकोणों को ठीक करें user.ini / fpm.conf / fascgi पैरामीटर।


1
php bin/magento setup:upgrade

php bin/magento setup:static-content:deploy -f

php bin/magento cache:flush

php bin/magento cache:clean

यह निश्चित रूप से काम होना चाहिए।


0

Magento 2.3 के लिए संगीतकार के बजाय संग्रह से स्थापित करते समय इसने मुझे उलझा दिया। मेरे मामले में, मैं जो सेटिंग बदल रहा था वह गलत जगह पर थी।

अपडेट कर रहा था:

vi /etc/php/7.2/cli/php.ini

अद्यतन करने की आवश्यकता:

vi /etc/php/7.2/apache2/php.ini

यह दोनों त्रुटियों के लिए है:

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted

तथा

PHP Fatal error:  Maximum execution time of 30 seconds exceeded in....

यह भी सुनिश्चित करें कि पुन: लिखना सक्षम करें: a2enmod rewriteयदि पृष्ठों के साथ समस्याएँ हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.