2012-01-24 6 views
0

Magento開発用に共有サーバー(RackSpace上)を使用しています。各開発者は自分のサンドボックスを持っていますが、PHPのmemory_limit = 512Mと私はMage::log($someBigArray)]で[いくつかのオブジェクトを検査しようとすると、私は失敗を取得し、Apacheはこれをログに記録します。共有されているMagento開発環境にどれくらいのメモリが必要ですか?

[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/ 

私の上司は、私たちが行うことができるようにメモリを増やしたいですこの種のロギング。現在のところ、開発者は3人しかいませんが、最大15人まで増やしたいと思っています.をphp.iniに設定して、多くの開発者を共有サーバー上でサポートするにはどれだけのメモリが適切でしょうか?

答えて

1
  1. あなたが世界で

  2. 全てのメモリを起動したら、あなたがあなたの店に持参することがありますトラフィックの量を考慮すれば、15人の開発者が、その多くはありませんが、あなたはできる限りAllowed memory size of 268435456 bytes exhaustedエラーを修正しません。これらのエラーは、PHPがオブジェクト間の循環的な再帰的なリンクに遭遇し、メモリに無限の文字列表現をスプールし続けると、発生します。 Magentoには、これらの循環参照が多数あります。

+0

アレイの有用な部分をログに安全にダンプする方法はありますか?たとえば、 'Mage_Checkout_Block_Cart_Totals - > _ totalals'を取る。 – kojiro

+1

@kojiro有用な部分を特定し、それらをプリミティブ型または単純な1レベルのオブジェクト/配列にスライスします。また、xDebugは、開発中の神の贈りものです。そのvar_dumpは、オブジェクトを展開しすぎてはいけないということに賢明です。 http://xdebug.org/ –

+0

+1 for xdebug !!たとえば、まともなIDEでさらにうまくいきました。 NetbeansまたはEclipseまたはPhpStorm –

0

あなたはまだ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です。

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

デバッグ方法は無限再帰を停止しますが、これが唯一のサブクラスのために動作します:あなたがログにダンプしたいされている大規模な配列がVarien_Objectある場合

、あなたはこのようにそれをダンプ試みることができますVarien_Objectの幸いにも、Magentoのオブジェクトの多くはVarien_Objectから派生しています。

関連する問題