Magento 2.x PHP memory_limit要求


11

我注意到Magento 2.1手册memory_limit=2G在中php.ini推荐。那真是个疯狂的内存,不是每个HTTP请求都允许该内存吗?我怀疑是否有托管服务提供商为PHP脚本提供了如此多的内存,并且肯定会使Magento无法用于共享托管。

这可能是设置和迁移的费用吗?生产真的需要这个数量吗?

我还在文档中找到了:

Set the PHP memory limit.
Our detailed recommendations are: 
Compiling code or deploying static assets, 756M 
Installing and updating Magento components from Magento Marketplace, 2G 
Testing, 2G

它没有提及生产建议。建议生产什么?

Answers:


8

正如您所找到的文档片段所解释的那样,2G内存限制是涵盖所有可能的用例的限制。根据安装的大小和复杂性,某些操作(尤其是诸如设置,测试和编译之类的命令行操作)可能会占用大量内存。

注意事项:

  1. memory_limit是给定PHP请求在终止之前允许占用的最大内存量。它不是每个请求将占用的内存总量。实际上,大多数前端请求将占用更少的内存(大多数CMS页面,类别,产品的内存大约为60 MB或更少),而某些异常值(检出)的消耗则取决于集成,自定义等,而占用的内存则要多出几倍。
  2. 某些服务器允许您为Web请求和命令行设置不同的内存限制。如果是这样,则CLI限制应为2G,Web限制应为768M或更少。
  3. Magento的本身试图强制执行全面的主板默认768M的限制,通过在规则.htaccesspub/.htaccessphp_value memory_limit 756M和在.user.inimemory_limit = 756M
  4. 您可能会在“ 技术堆栈要求 ”页面上看到有关最小2 GB的内容,这是在谈论系统总内存,而不是PHP内存限制。如果您尝试在RAM少于2 GB(包括交换)的虚拟专用服务器上运行Magento2,那么您的日子将会很糟糕。
  5. 专用环境将永远比共享托管更好,但是Magento2确实可以在共享托管上工作。Magento与包括GoDaddy在内的一些常见的托管服务提供商进行了广泛的合作,使一键安装成为现实。还有像Nexcess这样的Magento专用主机,它们可以提供更高级别的共享服务,但价格高出几美元。

关于第4点:OP来自“ Required PHP Settings”文档的报价,而不是技术堆栈要求。devdocs.magento.com/guides/v2.1/install-gde/prereq/… 他们建议使用2GB memory_limit进行测试和安装。
indefinitedevil

我想添加.user.ini到Magento使用/创建的文件列表以强制执行此限制。无论是在根还是在pub/
巴特·

推荐的2G环境与每个请求的2G明显不同!我无法想象后者对于繁忙的网站是可行的。而且即使命令行PHP操作消耗了2G的代码,效率也极低。
MarkE
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.