Error occurred during parsing: Fail to push limit, что именно лимит?
Подключил через композер 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 , но нет, на локальной машине и сервере он одинаков.
Место отлова ошибки:
Дополнительно:
Отследить ошибку можно только через перебор всех вариантов (брейкпоинты по стектрейсу и проверка всех условий), для полноценного ответа нужно ваше живое окружение, а у отвечающих его нет
Ответы:
А Вы собственно что хотите? :)))
Зачем Вы сами вызываете это событие (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...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Ошибка "Fail to push limit" может возникать из-за превышения лимита какого-либо ресурса в вашем приложении или сервере. Часто это может быть связано с использованием слишком больших объемов данных или операций, что приводит к исчерпанию выделенных ресурсов.
Чтобы понять, какой именно лимит был превышен, вам необходимо проанализировать код или настройки вашего сервера. Ниже приведены некоторые типичные причины и способы их решения:
1. **Лимит памяти**: Если вы работаете с большими объемами данных или выполняете сложные операции, увеличьте лимит памяти для вашего приложения. Вы можете сделать это в файле php.ini, установив значение директивы `memory_limit`.
memory_limit = 256Mmemory_limit = 256M
2. **Лимит времени выполнения скрипта**: Если ваш скрипт выполняется слишком долго, увеличьте лимит времени выполнения, установив значение директивы `max_execution_time` в php.ini.
max_execution_time = 60
3. **Лимит количества соединений**: Если ваш сервер имеет ограничение на количество одновременных соединений, убедитесь, что вы не превышаете это ограничение. Вы также можете настроить пулы соединений для более эффективного использования ресурсов.
4. **Лимит файловой системы**: Если ваше приложение выполняет много операций с файлами, убедитесь, что вы не превышаете лимиты файловой системы, такие как максимальное количество открытых файлов.
5. **Лимит запросов к базе данных**: Если ваше приложение делает много запросов к базе данных, убедитесь, что вы не превышаете лимиты соединений к базе данных или количество одновременных запросов.
Используйте инструменты мониторинга производительности, такие как New Relic или Xdebug, чтобы выявить и исправить проблемные места в вашем приложении. Помните, что оптимизация и управление ресурсами - ключевые аспекты разработки высокопроизводительных приложений.