【问题标题】:How much memory do I need for a shared Magento development environment?共享 Magento 开发环境需要多少内存?
【发布时间】:2012-01-24 20:02:00
【问题描述】:

我们使用共享服务器(在 RackSpace 上)进行 Magento 开发。每个开发人员都有自己的沙箱,但 PHP 的 memory_limit = 512M 和当我尝试检查一些对象时 [使用 Mage::log($someBigArray)],我遇到了失败,Apache 记录了这个:

[Mon Jan 23 15:47:35 2012] [error] [client 208.247.73.130] PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 228065281 bytes) in /home/msmith/projects/ref/app/Mage.php on line 761, referer: http://ref.msmith.mage.example.com/checkout/cart/

我的老板想增加内存以便我们可以进行这种日志记录。目前我们只有三个开发人员,但我们希望能够增加到 15 个。在 php.ini 中为memory_limit 设置多少内存来支持共享服务器上的这么多开发人员是合适的?

【问题讨论】:

    标签: php apache magento memory


    【解决方案1】:
    1. 尽可能多,但如果考虑到您在启动后将为商店带来的流量,那么 15 位开发人员并不算多

    2. 世界上所有的内存都无法修复您的 Allowed memory size of 268435456 bytes exhausted 错误。当 PHP 遇到对象之间的循环递归链接并不断将无限字符串表示形式假脱机到内存中时,就会出现这些错误。 Magento 有很多这样的循环引用。

    【讨论】:

    • 那么有什么方法可以安全地将数组的有用部分转储到日志中?以Mage_Checkout_Block_Cart_Totals->_totals 为例。
    • @kojiro 识别有用的部分,将它们分成原始类型或简单的一级对象/数组。此外,xDebug 在开发过程中是天赐之物,因为它的 var_dump 很聪明,不会过度扩展对象。 xdebug.org
    • xdebug +1!!使用像样的 IDE 会更好,例如Netbeans 或 Eclipse 或 PhpStorm
    【解决方案2】:

    您尚未使用 512MB - 请注意错误日志中指示的允许内存大小。除了 PHP.ini,Magento 在几个地方设置了内存限制,至少在我的发行版中(Linux 上的 BitNami 映像)。

    在 htdocs 中,我有 .htaccess:

    ############################################
    ## adjust memory limit
    
    #    php_value memory_limit 64M
        php_value memory_limit 256M
        php_value max_execution_time 18000
    

    这会影响大部分应用程序。代码中也有几处带有

        @set_time_limit(0);
        @ini_set('memory_limit', '256M');
    

    你可以用 grep 搜索这些。

    如果您要转储到日志的大型数组是 Varien_Object,您可以尝试像这样转储它:

        Mage::log(
            "My object: " .
            print_r($object->debug(),true),
            null,
            'MyLogfile.log'
        );
    

    调试方法停止无限递归,但这仅适用于 Varien_Object 的子类。幸运的是,Magento 中的许多对象都派生自 Varien_Object。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      相关资源
      最近更新 更多