Оптимизируйте получение большого количества данных из API с помощью Laravel 11, игроки из WARGAMINGPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Оптимизируйте получение большого количества данных из API с помощью Laravel 11, игроки из WARGAMING

Сообщение Anonymous »

Чтобы быть максимально кратким, я создаю веб-приложение, которое буду использовать для отображения статистики игроков, играющих в игры Wargaming. И их API - это что-то вроде мексиканского рагу, так как там много полей, правил и т. д., и мне удалось разобраться с этим, прочитать документацию, но «проблема», с которой я столкнулся, - это моя функция, которая выбирает игроков. Поскольку API позволяет выбирать игроков ТОЛЬКО, если вы вводите строковый аргумент, например «ааа», и, насколько я вижу, он говорит следующее:
*Тип поиска. По умолчанию — «начинается с». Допустимые значения:
"startswith" — поиск по начальным символам имени игрока. Минимальная длина: 3 символа. Максимальная длина: 24 символа. (по умолчанию)
"exact" — поиск по точному совпадению имени игрока. Нечувствителен к регистру. Вы можете ввести несколько имен через запятую (до 100).*
И, насколько я понимаю, лучше использовать «startswith», так как есть только эти 2 варианта . И моя функция довольно медленная, так как я использовал цикл для перебора всех комбинаций от «ааа» до «ззз»… и я не знаю, что еще использовать. Я использую Laravel 11, создал служебные файлы, которые обрабатывают логику, а затем контроллер просто вызывает эту функцию, когда это необходимо, и я относительно новичок в программировании, недавно я узнал о хэш-картах и ​​некоторых других DSA... так что, если кто-нибудь знает о чем-то, что могло бы ускорить мою функцию, которая сейчас работает часами. Буду благодарен.
Некоторые результаты, демонстрирующие «скорость» этого кода и почему Нужно ускориться
  • Насколько я знаю, это должно обслуживать минимум 200 тысяч игроков
  • Метод getAllPlayers() запускается одновременно с методом fetchAndStorePlayers, поскольку метод fetchAndStorePlayers() зависит от getAllPlayers(). Таким образом, основной метод выполняется в течение длительного времени, например это извлекает буквально все учетные записи, когда-либо созданные там, и дошло почти до конца тех, которые начинаются с A, и закончилось на 45 тысячах человек через пару часов, в частности, это закончилось следующим: *Разрешенный размер памяти 134217728 байт исчерпан ( пытался выделить 475136 байт) {"исключение":"[объект] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Исчерпан разрешенный размер памяти 134217728 байт (попытка выделить 475136 байт)
  • Это выполнение одного экземпляра fetchAccountCreatedDate
    Время выполнения fetchAccountCreatedDate: 0,90017795562744 секунды
    {"created_at":"2015-06-26 06:21:26"
Вот ССЫЛКА НА КОНЕЧНУЮ ТОЧКУ API
Вот ССЫЛКА НА ДОКУМЕНТАЦИЮ
Вот код служебного файла:



Подробнее здесь: https://stackoverflow.com/questions/793 ... from-warga
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»