Saya bekerja di Magento 2.2.2 dan ketika saya menyimpan produk, ini akan menampilkan kesalahan ini.
Kesalahan fatal: Ukuran memori yang diizinkan dari 792723456 byte habis (mencoba mengalokasikan 184320 byte) di /var/www/html/Demo/vendor/magento/framework/Profiler.php on line 153
Php version : 7.0
Magento : 2.2.2
Saya juga perubahan berlaku memory_limit = 16G
di php.ini
file dan restart server apache. tetap saja, masalah ini belum diperbaiki.
<?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.'));
}
}
}
Bagaimana cara mengatasinya?
Tolong bantu aku.
magento2
products
magento2.2
fatal-error
Rohan Hapani
sumber
sumber
Jawaban:
Coba perintah berikut:
Jika Anda masih menghadapi masalah, cobalah pengaturan berikut:
Periksa nilai memory_limit saat ini menggunakan CLI:
Jika masalah masih berlanjut, tambahkan batas memori (mis., Hingga 2048M) di tempat-tempat berikut:
Masalah harus diselesaikan sekarang, jika masih ada maka nonaktifkan modul khusus Anda dan periksa lagi.
sumber
Solusi cepat adalah
Coba ini, ini bekerja untuk saya.
sumber
792723456 byte berarti 756 MB. Ini adalah nilai yang Magento sarankan dan merupakan default pada konfigurasi sampel mereka (khususnya nginx).
Cobalah segala sesuatu yang disarankan @Pratik Oza dan izinkan saya menunjuk ke tempat lain. Apakah Anda menggunakan php-fpm atau CGI serupa? Jika demikian maka silakan periksa batas memori di sana juga.
Dalam kasus saya, saya menggunakan nginx + php-fpm dan saya mengatur memory_limit per proyek menggunakan
Juga jika Anda menggunakan CGI maka coba ini. Pertama-tama hentikan server web Anda, kemudian restart CGI Anda dan kemudian jalankan server web Anda lagi.
Ini adalah masalah acak yang saya hadapi sekali yang membuat saya melakukan hal di atas. Jika saya tidak melakukannya maka itu seperti nginx mengatur nilai sendiri untuk apa pun yang diteruskan ke php-fpm tanpa memperhatikan nilai yang ditetapkan pada php.ini atau fpm.conf.
EDIT: Saya melihat masalah diselesaikan dengan mengedit .user.ini. Itu berarti bahwa sebenarnya nginx yang melewati nilai lain dan juga bisa menjadi kasus yang saya jelaskan. Hanya menunjukkan ini. Juga kepada siapa pun yang membaca jawaban lain tolong jangan gunakan
set_init('memory_limit',-1)
EVER.Saya telah melihat pengembang saya menggunakan ini untuk menguji optimasi permintaan mysql dan script mencapai ram 35gg yang terus meningkat sampai saya membunuhnya setelah 10 menit. Cukup atur nilainya ke ambang batas yang layak sampai Anda mencapai titik berjalan dan biarkan di sana atau perbaiki nilainya atau parameter perspektif user.ini / fpm.conf / fascgi.
sumber
Ini pasti bekerja.
sumber
Ini membuat saya tersandung ketika menginstal dari arsip bukan komposer untuk magento 2.3. Dalam kasus saya, pengaturan yang saya ubah berada di tempat yang salah.
Sedang memperbarui:
vi /etc/php/7.2/cli/php.ini
diperlukan untuk memperbarui:
vi /etc/php/7.2/apache2/php.ini
Ini untuk kedua kesalahan seperti:
dan
Pastikan juga untuk mengaktifkan penulisan ulang:
a2enmod rewrite
jika mengalami masalah dengan halaman.sumber