Error occurred during parsing: Fail to push limit, что именно лимит?

Ссылка скопирована
1 ответ

Подключил через композер SDK от Google
Дела запрос по api и упираюсь в какой-то лимит (не лимит в гугл, а лимит ресурсов).
На локальной машине через openserver все отрабатывает, а на сервере - нет.

Версия php 7.2

Fatal error: Uncaught GoogleProtobufInternalGPBDecodeException: Error occurred during parsing: Fail to push limit. in /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/CodedInputStream.php:340 Stack trace: #0 /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/CodedInputStream.php(363): GoogleProtobufInternalCodedInputStream->pushLimit(196) #1 /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/GPBWire.php(288): GoogleProtobufInternalCodedInputStream->incrementRecursionDepthAndPushLimit(196, 0, 0) #2 /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php(420): GoogleProtobufInternalGPBWire::readMessage(Object(GoogleProtobufInternalCodedInputStream), Object(GoogleProtobufInternalFileDescriptorProto)) #3 /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php(500): Google in /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/CodedInputStream.php on line 340

Fatal error: Uncaught GoogleProtobufInternalGPBDecodeException: Error occurred during parsing: Fail to push limit. in /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/CodedInputStream.php:340 Stack trace: #0 /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/CodedInputStream.php(363): GoogleProtobufInternalCodedInputStream->pushLimit(196) #1 /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/GPBWire.php(288): GoogleProtobufInternalCodedInputStream->incrementRecursionDepthAndPushLimit(196, 0, 0) #2 /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php(420): GoogleProtobufInternalGPBWire::readMessage(Object(GoogleProtobufInternalCodedInputStream), Object(GoogleProtobufInternalFileDescriptorProto)) #3 /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php(500): Google in /home/lab/web/site/public_html/edit/vendor/google/protobuf/src/Google/Protobuf/Internal/CodedInputStream.php on line 340

Думал PHP_INT_MAX , но нет, на локальной машине и сервере он одинаков.

Место отлова ошибки:

Error occurred during parsing: Fail to push limit, что именно лимит?

Дополнительно:

Отследить ошибку можно только через перебор всех вариантов (брейкпоинты по стектрейсу и проверка всех условий), для полноценного ответа нужно ваше живое окружение, а у отвечающих его нет

  • Daria Motorina, да я думал может кто сталкивался с подобным и подскажет куда рыть.
  • Ответы:

    А Вы собственно что хотите? :)))
    Зачем Вы сами вызываете это событие (throw new GPBDe.....?)
    :)
    У Вас не выполняется условие в IF ($byte_lim.....
    потому Вы и натыкаетесь на (throw new GPBDe....)

    Будьте внимательнее!

    • Я вызываю
      $intentsClient = new IntentsClient(['credentials' => $key]);

      $intentsClient = new IntentsClient(['credentials' => $key]);

      А дальше работает либа от гугл(она и вызывает эти события) , и валится... и только на сервере, на локалке окей

    • Ainur Shakirov, ну Вы наверное теперь понимаете, что Вам нужно вывести до throw new GPBDe...?
      Выведите переменные с окончание на die();
      до throw и посмотрите что в них.
    • Ainur Shakirov, решение не нашлось?
    • darton1, нет. У вас такая же проблема?

    https://ru.stackoverflow.com/a/1088223/368318

    В данному случае поможет - mbstring.func_overload 0

    Ошибка связана с файлами Protobuf. Подробнее здесь
    https://stackoverflow.com/questions/60391728/googl...

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Юрий Linux Ответ

    Ошибка "Fail to push limit" может возникать из-за превышения лимита какого-либо ресурса в вашем приложении или сервере. Часто это может быть связано с использованием слишком больших объемов данных или операций, что приводит к исчерпанию выделенных ресурсов.

    Чтобы понять, какой именно лимит был превышен, вам необходимо проанализировать код или настройки вашего сервера. Ниже приведены некоторые типичные причины и способы их решения:

    1. **Лимит памяти**: Если вы работаете с большими объемами данных или выполняете сложные операции, увеличьте лимит памяти для вашего приложения. Вы можете сделать это в файле php.ini, установив значение директивы `memory_limit`.

    memory_limit = 256M

    memory_limit = 256M

    2. **Лимит времени выполнения скрипта**: Если ваш скрипт выполняется слишком долго, увеличьте лимит времени выполнения, установив значение директивы `max_execution_time` в php.ini.

    max_execution_time = 60

    max_execution_time = 60

    3. **Лимит количества соединений**: Если ваш сервер имеет ограничение на количество одновременных соединений, убедитесь, что вы не превышаете это ограничение. Вы также можете настроить пулы соединений для более эффективного использования ресурсов.

    4. **Лимит файловой системы**: Если ваше приложение выполняет много операций с файлами, убедитесь, что вы не превышаете лимиты файловой системы, такие как максимальное количество открытых файлов.

    5. **Лимит запросов к базе данных**: Если ваше приложение делает много запросов к базе данных, убедитесь, что вы не превышаете лимиты соединений к базе данных или количество одновременных запросов.

    Используйте инструменты мониторинга производительности, такие как New Relic или Xdebug, чтобы выявить и исправить проблемные места в вашем приложении. Помните, что оптимизация и управление ресурсами - ключевые аспекты разработки высокопроизводительных приложений.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно