Estou trabalhando no magento 2.2.2 e quando eu salvar o produto Ele exibirá esse erro.
Erro fatal: tamanho de memória permitido de 792723456 bytes esgotado (tentou alocar 184320 bytes) em /var/www/html/Demo/vendor/magento/framework/Profiler.php na linha 153
Php version : 7.0
Magento : 2.2.2
Eu também as alterações se aplicam memory_limit = 16G
no php.ini
arquivo e reiniciam o servidor apache. Ainda assim, esse problema não foi corrigido.
<?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.'));
}
}
}
Como resolver isso?
Por favor me ajude.
magento2
products
magento2.2
fatal-error
Rohan Hapani
fonte
fonte
Respostas:
Tente os seguintes comandos:
Se você ainda estiver com problemas, tente as seguintes configurações:
Verifique o valor atual memory_limit usando a CLI:
Se o problema persistir, aumente o limite de memória (por exemplo, até 2048M) nos seguintes locais:
O problema deve estar resolvido agora, se ainda estiver lá, desative o módulo personalizado e verifique novamente.
fonte
Uma solução rápida é
Tente isso, funcionou para mim.
fonte
792723456 bytes significam 756 MB. Este é o valor que o Magento sugere e é o padrão em suas configurações de amostra (nginx em particular).
Tente tudo o que o @Pratik Oza sugeriu e deixe-me apontar para outro lugar. Você está usando php-fpm ou um CGI semelhante? Nesse caso, verifique também os limites de memória.
No meu caso, estou usando nginx + php-fpm e defino o memory_limit por projeto usando o
Além disso, se você estiver usando um CGI, tente isso. Primeiro, pare o servidor da web, reinicie o CGI e, em seguida, inicie o servidor novamente.
O problema é aleatório que eu enfrentei uma vez que me fez fazer o procedimento acima. Se eu não fiz, era como o nginx definir seus próprios valores para qualquer coisa passada para o php-fpm sem cuidar dos valores definidos no php.ini ou no fpm.conf.
EDIT: vejo que o problema foi resolvido editando o .user.ini. Isso significa que na verdade foi o nginx que passou outro valor e também pode ser o caso que descrevi. Apenas apontando este. Também para quem lê as outras respostas, por favor, não use
set_init('memory_limit',-1)
NUNCA.Eu vi um desenvolvedor meu usando isso para testar uma otimização de consulta mysql e o script atingiu uma ram de 35gigs que continuava aumentando até que eu a matasse após 10 minutos. Basta definir o valor como um limite decente até chegar ao ponto de execução e deixá-lo lá ou fixar os valores ou as perspectivas user.ini / fpm.conf / fascgi.
fonte
Definitivamente, é trabalho.
fonte
Isso me tropeçou ao instalar a partir do archive, em vez do compositor para o magento 2.3. No meu caso, as configurações que eu estava alterando estavam no lugar errado.
Estava atualizando:
vi /etc/php/7.2/cli/php.ini
necessário para atualizar:
vi /etc/php/7.2/apache2/php.ini
Isto é para ambos os erros, como:
e
Certifique-se também de ativar a reescrita:
a2enmod rewrite
se houver problemas com as páginas.fonte