Использование private $ var замедляет foreach в PHP (консольная команда Symfony4) - PullRequest
0 голосов
/ 05 октября 2018

Учитывая консольную команду с набором данных, загруженным из базы данных, мой скрипт сканирует API.При «оптимизации» моего кода я заметил кое-что странное поведение:

Класс сканирования / check_online

class Crawl {
    ...
    public function check_online($data){
        $settings = new Settings();
        $api = new RiotApi($settings);

        try {
            $game = $api->getCurrentGame($summoner->getSummonerId());
        } catch (RiotApiException $e) {
           throw new CrawlException($e->getMessage());
        }

        ...
    }
    ...
}

Команда Symfony

$apiCrawl = new Crawl($this->em, true);

foreach($dataset as $data){
    $online= $apiCrawl ->check_online($data);
}

Это выполняется примерно за 1 секундуper $data

Поскольку $api используется несколько раз, я попытался переместить его в конструктор класса Crawl:

public function __construct(ObjectManager $em)
{
    $this->em = $em;
    $settings = new Settings();
    $this->api = new RiotApi($settings);
}

и обновил команду Symfonyсоответственно:

try {
    $game = $this->api->getCurrentGame($summoner->getSummonerId());
} catch (RiotApiException $e) {
    throw new CrawlException($e->getMessage());
}

теперь для выполнения требуется около 10 секунд.Что-то не так с этим подходом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...