ดูจำนวนผลิตภัณฑ์ที่ไม่ได้อัพเดต


11

มีตารางที่แตกต่างกัน 3 ตารางที่เก็บจำนวนการดูผลิตภัณฑ์

  • report_viewed_product_aggregated_daily
  • report_viewed_product_aggregated_monthly
  • report_viewed_product_aggregated_yearly

หากฉันต้องการได้รับจำนวนผลิตภัณฑ์ที่ดูในปัจจุบันฉันสามารถรับได้จากตารางใด ๆ เหล่านี้ แต่ปัญหาคือเมื่อใดก็ตามที่ฉันเปิดผลิตภัณฑ์ที่ส่วนหน้าไม่มีตารางเหล่านี้แสดงผลลัพธ์ใด ๆ ที่เกี่ยวข้องกับผลิตภัณฑ์นั้น

มันเป็นปัญหาคุณภาพเยี่ยมหรือไม่?

ฉันคิดว่าฉันต้องตั้ง Magento cron เพื่ออัปเดตตารางเหล่านี้ทันทีเมื่อผู้ใช้เปิดผลิตภัณฑ์ แต่มันก็ไม่ได้ผลสำหรับฉัน


ไม่ได้รับคำตอบใด ๆ :(
Muhammad Wasif

ตอนแรกฉันไม่รู้ว่าชื่อเสียงของฉันจะ
Muhammad Wasif

คำตอบ:


10

ตารางเหล่านี้จะไม่อัปเดตในขณะทำงาน

คุณต้องเรียกใช้Refresh Statisticsจาก:

รายงาน -> สถิติ -> รีเฟรชสถิติ

หากคุณต้องการเรียกใช้จาก cronjob ให้ไปที่ลิงก์นี้: /magento//a/243187/31910


เรื่องนี้น่าพอใจจริงๆ ขอขอบคุณสำหรับการชี้แจง :)
มูฮัมหมัด Wasif

7

ไปที่Admin -> Reports -> Refresh Statisticsแล้วเลือกรายงานที่คุณต้องการรีเฟรชจากนั้นกดปุ่มส่ง

เมื่อรีเฟรชกลับไปที่รายงานและเลือกวันที่และเวลาที่ต้องการจากนั้นคลิกที่ปุ่มแสดงรายงาน

คุณควรเห็นรายงานตามที่ต้องการ

หากยังไม่มีอะไรคุณอาจต้องขุดในreport_viewed_product_*ตารางและดูว่ามีข้อมูลใด ๆ


+1 สำหรับเวลาและความพยายามของคุณ
มูฮัมหมัด Wasif

2

หลังจากคำตอบ@Shoaib มูนีร์และ@Rk Rathodตารางเหล่านี้จะไม่อัปเดตบนรันไทม์ดังนั้นคุณจำเป็นต้องเรียกใช้รีเฟรชสถิติจากReports -> Statistics -> Refresh Statisticsทุกครั้ง แต่ถ้าคุณไม่ต้องการรีเฟรชสถิติด้วยตนเองทุกครั้งดังนั้นคุณอาจตั้งค่า cron เพื่อให้มันจะรีเฟรชสถิติโดยอัตโนมัติ

ก่อนอื่นคุณต้องส่งอาร์กิวเมนต์reportTypesไปที่คลาส cron ของคุณโดยใช้ di.xml เช่นด้านล่าง (ฉันได้ผ่านการขัดแย้งทั้งหมดที่คุณอาจผ่านตามความต้องการของคุณ)

<type name="Vendor\Module\Cron\CronFile">
        <arguments>
            <argument name="reportTypes" xsi:type="array">
                <item name="sales" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Order</item>
                <item name="tax" xsi:type="string">Magento\Tax\Model\ResourceModel\Report\Tax</item>
                <item name="shipping" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Shipping</item>
                <item name="invoiced" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Invoiced</item>
                <item name="refunded" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Refunded</item>
                <item name="coupons" xsi:type="string">Magento\SalesRule\Model\ResourceModel\Report\Rule</item>
                <item name="bestsellers" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Bestsellers</item>
                <item name="viewed" xsi:type="string">Magento\Reports\Model\ResourceModel\Report\Product\Viewed</item>
            </argument>
        </arguments>
    </type>

จากนั้นในไฟล์ cron ของคุณควรเป็นเช่นนี้

<?php
namespace Vendor\Module\Cron;
use Magento\Reports\Model\ResourceModel\Refresh\Collection;

class CronFile extends Collection
{
    protected $logger;
    protected $reportTypes;

    public function __construct(
        \Magento\Framework\Data\Collection\EntityFactory $entityFactory,
        \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
        \Magento\Reports\Model\FlagFactory $reportsFlagFactory,
        \Psr\Log\LoggerInterface $logger,
        array $reportTypes
    ) {
        $this->logger = $logger;
        $this->reportTypes = $reportTypes;
        parent::__construct($entityFactory,$localeDate,$reportsFlagFactory);
    }
    /**
     * @return $this
     */
    public function execute()
    {
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();

        try {
            $codes = $this->loadData();

            foreach ($codes->_items as $codek=>$codev) {
                $objectManager->create($this->reportTypes[$codek])->aggregate();
            }
        } catch (\Magento\Framework\Exception\LocalizedException $e) {
            $this->logger->critical($e->getMessage());
        } catch (\Exception $e) {
           $this->logger->critical($e->getMessage());
        }
        return $this;
    }
}

ฉันหวังว่ามันจะช่วย!


+1 สำหรับเวลาและความพยายามของคุณ ฉันทำเครื่องหมายคำตอบแรกที่ถูกต้องของ Shoaib Munir
มูฮัมหมัด Wasif

1
ขอบคุณสำหรับความชื่นชมของคุณ :) +1 สำหรับคุณ
Chirag Patel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.