Websocket забивает память в Laravel

Я использую сервис websocket для получения информации от тикера. Этот тикер срабатывает каждые X мс. Это пакет, который я использую: https://github.com/jaggedsoft/php-binance-api

И вот мой код:

    $api = new BinanceAPI($this->key, $this->secret);
$api->ticker(false, function($api, $symbol, $ticker) {
event(new NewTickerEvent($ticker));
});

Что происходит, так это то, что создается бесконечный цикл. Память используется, но никогда не освобождается. Я пробовал все от методов __destruct с unset, null, сборкой мусора и т. Д.

Память просто забивается, как будто она никогда не высвобождается в этом цикле.

Как я могу решить эту проблему, чтобы после каждого «тика» память освобождалась.

Новое событие тикера вызывает этот фрагмент кода (который помогает засорять память) в Слушателе:

    $exchange = Exchange::where('name', 'binance')->where(function ($query) use ($symbol) {
$query->whereHas('rules', function ($query) use ($symbol) {
$query->ofPair($symbol)->whereHas('trades', function ($query) {
$query->where('active', 1)->whereHas('user.subscriptions', function ($query) {
$query->where('stripe_plan', '!=', 'free');
});
});
});
})
->first();

// Only continue if there's a trade active
if ($exchange == null) {
return;
}

$exchange->load([
'rules' => function ($query) use ($symbol) { $query->ofPair($symbol); },
'rules.trades' => function ($query) {
$query->where('active', 1)->whereHas('user.subscriptions', function ($query) {
$query->where('stripe_plan', '!=', 'free');
});
},
'rules.trades.user', 'rules.trades.targets.tradeApi',
'rules.trades.buyOrder', 'rules.trades.takeProfitOrders',
'rules.trades.originStopLossOrder', 'rules.trades.trailingStopLossOrder',
]);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector