什么时候在magento2中运行以下命令?


8

只需在这些命令之间有一个明显的区别。

  1. 何时运行magento设置:升级
  2. 何时运行setup:di:compile

同样,当所有缓存都被禁用时,在模块发生任何更改后,我们是否还需要刷新缓存并重新索引索引器?

Answers:


5

何时运行setup:upgrade命令

如果启用了一个或多个模块,则需要运行Magento setup:upgrade来更新数据库架构。

要么

如果您编写一些升级方案,则必须启动Magento setup:upgrade命令

我们什么时候需要运行setup:di:compile命令?

答案很简单,该命令实现了以下目的

  1. 应用程序代码生成(工厂,代理等)

  2. 区域配置聚合(即,每个区域的优化依赖项注入配置)

  3. 拦截器生成(即,拦截器的优化代码生成)

  4. 拦截缓存生成

  5. 存储库代码生成(即,为API生成的代码)

  6. 服务数据属性生成(即,生成的数据对象扩展类)

http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html

如果您的magento处于开发人员模式,则无需触发编译命令,只需删除var/digeneration文件夹(在magento 2.0.x和2.1.x中)或生成的文件夹(在Magento 2.2.x及更高版本中)


随时欢迎您:)
Murtuza Zabuawala

您确定var/di开发人员模式下有@MurtuzaZabuawala 吗?
MagePsycho

5

bin / magento setup:upgrade ::仅在与安装程序脚本相关的模块有任何更改时使用。升级后,需要运行bin / magento setup:di:compile

bin / magento setup:di:compile ::如果要进行与di.xml文件或任何控制器方法有关的任何更改。在这种情况下,无需运行升级。


1

magento setup:upgrade大致相当于magento 1中的n98-magerun sys:setup:run,它可以运行您的设置脚本,但它不包含magento 2中自2.1以来的功能(如果我没有记错的话)。它会激活您新创建的模块。这将需要在开发人员模式以及生产和默认模式下运行。setup:di:compile会生成您的“自动生成的”类,它只需要在生产模式下运行,因为这是在开发人员模式下自动完成的。

同样,关于索引编制,除非启用了平面表并且对受索引影响的实体之一进行了更改(例如产品属性,类别属性,类别产品等),否则不需要这样做。清除缓存不应从理论上讲,如果禁用了缓存,则需要运行,但我一直都在进行完整性检查,请记住,安装程序升级也会清除缓存。

我希望这回答了你的问题。


0

setup:upgrade 对模块文件进行更改后,必须运行setup:upgrade命令

setup:di:compile 对模块/布局配置进行更改后,必须运行setup:di:compile命令

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.