Учитывая консольную команду с набором данных, загруженным из базы данных, мой скрипт сканирует 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 секунд.Что-то не так с этим подходом?