Magento 2: ฉันควรรันคำสั่งใดเมื่อไหร่?


20

ฉันทำงานกับMagento 2มา 2 เดือนแล้ว ฉันรู้ว่าฉันใช้bin/magento setup:upgradeวิธีมากเกินไป ฉันคิดว่าฉันไม่ทราบว่าเมื่อใดที่ฉันต้องเรียกใช้คำสั่งนั้น

นี่คือสถานการณ์ที่ฉันเรียกใช้คำสั่งดังกล่าว

  • เมื่อฉันสร้างโมดูลใหม่
  • เมื่อฉันเพิ่มบางสิ่งลงในไดเรกทอรีการตั้งค่า
  • เมื่อฉันแก้ไขetc/module.xml,
  • เมื่อฉันแก้ไขetc/di.xml,
  • เมื่อฉันแก้ไขetc/webapi.xml,
  • เมื่อฉันแก้ไข etc/adminhtml/system.xml

คำถาม:ในสถานการณ์ใดที่จำเป็นอย่างยิ่งที่จะต้องรันbin/magento setup:upgradeคำสั่ง?

( เหตุผลที่ฉันถามคือใช้เวลาพอเสร็จคำสั่งนั้นฉันเชื่อว่ามันสามารถปรับปรุงประสิทธิภาพการผลิตได้จริงถ้าฉันหยุดใช้โดยไม่จำเป็น )

คำตอบ:


43

อ่านเพิ่มเติมได้ที่: บล็อก Mageprince

คุณจะต้องเรียกใช้setup:upgradeคำสั่ง

1. เมื่อคุณทำการเปลี่ยนแปลงในสคริปต์การติดตั้ง (InstallData, InstallSchema,
UpgradeData, UpgradeSchema, ... )

2. หากคุณติดตั้ง Magento เป็นครั้งแรก

3. ในช่วงเวลาของการติดตั้งโมดูลใหม่

4. หลังจากอัพเกรดเวอร์ชั่นวีโอไอพี

จะsetup:upgradeสั่งทำอะไร

1)ตรวจสอบเวอร์ชั่นโมดูลในsetup_moduleตาราง

2)หากรุ่นไม่พร้อมใช้งานหรือเพิ่มรุ่นใหม่ใน module.xml มันจะเรียกใช้สคริปต์การตั้งค่าและเพิ่มหมายเลขรุ่นล่าสุดในตาราง

หากคุณทำการเปลี่ยนแปลงในไฟล์ HTML, CSS, JS, ...คุณจำเป็นต้องลบไฟล์ที่เปลี่ยนแปลงเฉพาะจากpub/staticโฟลเดอร์หรือเรียกใช้คำสั่งนี้

การตั้งค่า php bin / magento: เนื้อหาคงที่: ปรับใช้

แบบสั้น: php bin / magento s: s: d

หากคุณทำการเปลี่ยนแปลงเช่นเพิ่มการพึ่งพาใหม่ใน __construct () หรือการเปลี่ยนแปลงdi.xmlคุณต้องลบไฟล์ที่ถูกเปลี่ยนจากvar/generationโฟลเดอร์หรือเรียกใช้คำสั่งนี้

การตั้งค่า php bin / magento: di: compile

แบบสั้น: php bin / magento s: d: c

หากคุณทำการเปลี่ยนแปลงในการกำหนดค่าของผู้ดูแลระบบ, เลย์เอาต์ xml, คอมโพเนนต์ ui, phtml, ...ไฟล์ที่คุณต้องล้างหรือล้างแคชเท่านั้น

php bin / magento cache: flush

แบบสั้น: php bin / magento c: f


3

1. เมื่อฉันสร้างโมดูลใหม่:

2. เมื่อฉันเพิ่มบางสิ่งลงในไดเรกทอรีการตั้งค่า

3. เมื่อฉันแก้ไข etc / module.xml

php bin/magento module:enable
php bin/magento setup:upgrade

4. เมื่อฉันแก้ไข etc / module.xml

5. เมื่อฉันแก้ไข etc / di.xml

6. เมื่อฉันแก้ไข etc / webapi.xml

7. เมื่อฉันแก้ไข etc / adminhtml / system.xml สำหรับการเปลี่ยนแปลงล้างแคชของ xml มากกว่าพอ:

php bin/magento cache:flush

การเปลี่ยนแปลง css และ js: - ล้างแคชและ php bin/magento setup:static-content:deploy


เท่าที่ผมเข้าใจสามารถดำเนินการเป็นทางเลือกให้กับsetup:upgrade module:enable
น้ำท่วมโจชัว

มีสคริปต์ใดบ้างที่รวมคำสั่งเหล่านี้ใน 1 หรือไม่
snh_nl

2

หากคุณทำงานกับโหมดนักพัฒนาซอฟต์แวร์ที่คุณไม่จำเป็นต้องcompilอีเมื่อคุณปรับเปลี่ยนคุณสามารถทำเพียงxmlsetup:upgrade

และสำหรับการปรับเปลี่ยนคนอื่น ๆcss, phtml,jsเพียงflush cacheคุณไม่จำเป็นต้องไปปรับใช้เนื้อหาแบบคงที่


ไม่เราไม่จำเป็นต้องเรียกใช้setup:upgradeสำหรับการแก้ไข xml สำหรับรายละเอียดเพิ่มเติมดูคำตอบบน :)
ปรินซ์เทล

1

เพียงแค่ต้องทำการติดตั้ง bin / magento: อัพเกรดเมื่อใดก็ตามที่คุณทำการแก้ไขบนฐานข้อมูล

ตัวอย่างเช่นถ้าคุณกำลังสร้างคุณลักษณะ (โดยทางโปรแกรม), โมดูลใหม่, การอัพเกรดเวอร์ชั่น ฯลฯ

ดังนั้นกฎพื้นฐานที่ควรคำนึงถึงคือถ้าคุณรู้ว่ารหัสของคุณจะทำการแก้ไขในฐานข้อมูลจากนั้นให้รันคำสั่ง setup: upgrade


ไม่php bin/magento setup:upgradeให้ติดตั้ง JOB CRON ล้าสมัย? ฉันสับสนเพราะมันถูกบันทึกไว้ที่นี่เป็น cronjob เพื่อรันทุก ๆ นาทีdevdocs.magento.com/guides/v2.3/comp-mgr/module-man/…
snh_nl

1

ฉันได้สร้างไฟล์ bash ที่สามารถทำให้กระบวนการเป็นไปโดยอัตโนมัติ:

ในประเภทโฟลเดอร์วีโอไอพีของคุณ 'vi magento_bash' คัดลอกและวางรหัสด้านล่าง บันทึกไฟล์โดยการหลบหนีและ: wq และป้อนความหวังว่าสิ่งนี้จะช่วยได้ หมายเหตุ: ไฟล์ด้านล่างใช้เวลาเพียงคำสั่งเดียวในแต่ละครั้ง

#!/bin/sh

mainmenu()
{

echo 'Press 1 if you have created a new module'

echo 'Press 2 if you have changed HTML, CSS, JS..'

echo 'Press 3 if you have made changes like add new dependency in __construct() or changes in di.xml'

echo 'Press 4 if you have made changes like admin configuration, layout xml, ui component, phtml'

read -n 1 -p "Input Selection:" mainmenuinput

if [ "$mainmenuinput" = "1" ];
then
    cd src
    php bin/magento setup:upgrade
elif [ "$mainmenuinput" = "2" ];
then
    cd src
    php bin/magento s:s:d en_AU en_US
elif [ "$mainmenuinput" = "3" ];
then
    cd src
    php bin/magento setup:di:compile
elif [ "$mainmenuinput" = "4" ];
then
    cd src
    php bin/magento cache:flush
else
    echo 'You have selected an invalid selection'
fi
}

mainmenu

en_AU en_US อยู่หลังคำสั่ง ssd หรือไม่
snh_nl

0

เมื่อคุณปรับใช้รหัสของคุณด้วยตนเอง วิธีการที่แนะนำข้างต้นทั้งหมดนั้นดีพอที่จะประหยัดเวลา

หากคุณมีการปรับใช้อัตโนมัติผ่าน Jenkins หรือเครื่องมืออื่น ๆ คุณควรเรียกใช้คำสั่งทั้งหมดเนื่องจากเครื่องมือไม่ทราบว่าคุณทำอะไรและมีการเปลี่ยนแปลงไฟล์ใด

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