0

次の出力はメモリ リークを示していますか?
ワーカー サーバーのメモリが不足しています。安定した割り当てですが、実行後にメモリを解放していません。

ここに問題があります https://github.com/guzzle/oauth-subscriber/issues/47#issuecomment-148480943

use GuzzleHttp\HandlerStack;
use GuzzleHttp\Subscriber\Oauth\Oauth1;

function stack_it()

{
  $stack = HandlerStack::create();

  $middleware = new Oauth1([
    'consumer_key'    => NULL,
    'consumer_secret' => NULL,
    'token'           => NULL,
    'token_secret'    => NULL,
  ]);
  $stack->push($middleware, 'oauth_1');

  $stack->remove('oauth_1');
}

echo 'initial: '.memory_get_usage().PHP_EOL;
for ($i=0; $i < 20; $i++)
{
  $this->stack_it();

  gc_collect_cycles();
  echo memory_get_usage().PHP_EOL;
}

die();

出力

initial: 3818976
4282040
4282040
4282040
4282040
...
4282040
4282040
4282040
4282040
4

1 に答える 1

1

あなたが目撃しているのは、 の通常のメモリ消費ですHandlerStackHandlerStackのソースを参照してください。連続する反復ごとにメモリ使用量が増加しないという事実は、リークがないことを示しています。

HandlerStack::create()呼び出されると、Cookie のサポート、HTTP エラーの例外、リダイレクト、および送信前の本文の準備がハンドラーに追加されます。

于 2015-10-19T13:41:21.263 に答える