Ich arbeite in Magento 2.2.2 und wenn ich das Produkt speichere, wird dieser Fehler angezeigt.
Schwerwiegender Fehler: Zulässige Speichergröße von 792723456 Byte erschöpft (versucht, 184320 Byte zuzuweisen) in /var/www/html/Demo/vendor/magento/framework/Profiler.php in Zeile 153
Php version : 7.0
Magento : 2.2.2
Ich beziehe mich auch auf Änderungen memory_limit = 16G
in der php.ini
Datei und starte den Apache-Server neu. Dieses Problem wurde jedoch nicht behoben.
<?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.'));
}
}
}
Wie man es löst ?
Bitte hilf mir.
magento2
products
magento2.2
fatal-error
Rohan Hapani
quelle
quelle
Antworten:
Versuchen Sie folgende Befehle:
Wenn immer noch Probleme auftreten, versuchen Sie die folgenden Einstellungen:
Überprüfen Sie den aktuellen Wert für memory_limit mithilfe der CLI:
Wenn das Problem weiterhin besteht, erhöhen Sie das Speicherlimit (z. B. bis zu 2048 MB) an folgenden Stellen:
Das Problem sollte jetzt behoben sein. Wenn es noch vorhanden ist, deaktivieren Sie Ihr benutzerdefiniertes Modul und überprüfen Sie es erneut.
quelle
Eine schnelle Lösung ist
Versuchen Sie dies, es hat bei mir funktioniert.
quelle
792723456 Bytes bedeuten 756 MB. Dies ist der von Magento vorgeschlagene Wert und der Standardwert für die Beispielkonfigurationen (insbesondere Nginx).
Versuchen Sie alles, was @Pratik Oza vorgeschlagen hat, und lassen Sie mich auf einen anderen Ort verweisen. Verwenden Sie php-fpm oder ein ähnliches CGI? Wenn ja, überprüfen Sie dort bitte auch die Speicherbeschränkungen.
In meinem Fall verwende ich nginx + php-fpm und setze das memory_limit pro Projekt mit dem
Auch wenn Sie ein CGI verwenden, versuchen Sie dies. Stoppen Sie zuerst Ihren Webserver, starten Sie dann CGI neu und starten Sie dann Ihren Webserver erneut.
Das ist ein zufälliges Problem, mit dem ich einmal konfrontiert war und das mich dazu brachte, das oben genannte zu tun. Wenn ich es nicht tat, war es so, als würde nginx seine eigenen Werte auf alles setzen, was an php-fpm übergeben wurde, ohne die auf php.ini oder fpm.conf festgelegten Werte zu berücksichtigen.
BEARBEITEN: Ich sehe, dass das Problem durch Bearbeiten der .user.ini gelöst wurde. Das bedeutet, dass es tatsächlich Nginx war, das einen anderen Wert übergeben hat und auch der von mir beschriebene Fall sein könnte. Ich möchte nur darauf hinweisen. Auch für alle, die die anderen Antworten lesen, verwenden Sie bitte
set_init('memory_limit',-1)
NIEMALS.Ich habe einen Entwickler von mir gesehen, der damit eine MySQL-Abfrageoptimierung getestet hat, und das Skript erreichte einen RAM von 35 GB, der weiter zunahm, bis ich ihn nach 10 Minuten tötete. Setzen Sie den Wert einfach auf einen anständigen Schwellenwert, bis Sie zum Startpunkt gelangen, und lassen Sie ihn dort oder korrigieren Sie die Werte oder die Perspektiven des Parameters user.ini / fpm.conf / fascgi.
quelle
Es ist definitiv Arbeit.
quelle
Dies hat mich bei der Installation aus dem Archiv anstelle von Composer für Magento 2.3 gestolpert. In meinem Fall waren die Einstellungen, die ich geändert habe, am falschen Ort.
Wurde aktualisiert:
vi /etc/php/7.2/cli/php.ini
benötigt, um zu aktualisieren:
vi /etc/php/7.2/apache2/php.ini
Dies gilt für beide Fehler wie:
und
Stellen Sie außerdem sicher, dass das Umschreiben aktiviert ist:
a2enmod rewrite
Wenn Probleme mit Seiten auftreten.quelle