Estoy trabajando en magento 2.2.2 y cuando guardo el producto, aparecerá este error.
Error fatal: tamaño de memoria permitido de 792723456 bytes agotados (intentó asignar 184320 bytes) en /var/www/html/Demo/vendor/magento/framework/Profiler.php en la línea 153
Php version : 7.0
Magento : 2.2.2
También me aplico cambios en memory_limit = 16G
en el php.ini
archivo y reiniciar Apache servidor. Aún así, este problema no se solucionó.
<?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.'));
}
}
}
Cómo resolverlo ?
Por favor, ayúdame.
magento2
products
magento2.2
fatal-error
Rohan Hapani
fuente
fuente
Respuestas:
Pruebe los siguientes comandos:
Si aún tiene problemas, intente la siguiente configuración:
Verifique el valor actual de memory_limit usando CLI:
Si el problema persiste, aumente el límite de memoria (por ejemplo, hasta 2048 M) en los siguientes lugares:
El problema ya debería resolverse; si todavía está allí, desactive su módulo personalizado y verifique nuevamente.
fuente
Una solución rápida es
Prueba esto, ha funcionado para mí.
fuente
792723456 bytes significan 756 MB. Este es el valor que sugiere Magento y es el valor predeterminado en sus configuraciones de muestra (nginx en particular).
Intente todo lo que sugirió @Pratik Oza y permítame señalar otro lugar. ¿Estás usando php-fpm o un CGI similar? Si es así, compruebe los límites de memoria allí también.
En mi caso, estoy usando nginx + php-fpm y configuré el memory_limit por proyecto usando el
Además, si está utilizando un CGI, intente esto. Primero detenga su servidor web, luego reinicie su CGI y luego inicie su servidor web nuevamente.
El es un problema aleatorio que enfrenté una vez que me hizo hacer lo anterior. Si no lo hice, fue como nginx set sus propios valores a todo lo que se pasó a php-fpm sin preocuparse por los valores establecidos en php.ini o fpm.conf.
EDITAR: veo que el problema se resolvió editando .user.ini. Eso significa que en realidad fue nginx el que pasó otro valor y también podría ser el caso que describí. Solo estoy señalando esto. También a cualquiera que lea las otras respuestas, por favor no use
set_init('memory_limit',-1)
NUNCA.He visto a un desarrollador mío usar esto para probar una optimización de consultas mysql y el script alcanzó un ram de 35 gigas que siguió aumentando hasta que lo maté después de 10 minutos. Simplemente configure el valor en un umbral decente hasta llegar al punto de ejecución y déjelo allí o fije los valores o el parámetro de perspectivas user.ini / fpm.conf / fascgi.
fuente
Definitivamente será trabajo.
fuente
Esto me hizo tropezar al instalar desde el archivo en lugar del compositor para magento 2.3. En mi caso, la configuración que estaba cambiando estaba en el lugar equivocado.
Estaba actualizando:
vi /etc/php/7.2/cli/php.ini
necesario para actualizar:
vi /etc/php/7.2/apache2/php.ini
Esto es para ambos errores como:
y
También asegúrese de habilitar la reescritura:
a2enmod rewrite
si tiene problemas con las páginas.fuente