Intereting Posts
как изменить URL-адрес метода GET для очистки URL-адреса в php? Настройка Paypal для подключения к скрипту Игнорировать слэш при использовании шифрования в кодеигниторе Потеря переменной сеанса после вызова ajax Отрицательный DateInterval Итерация по сложному ассоциативному массиву в PHP Ошибка PHP mcrypt_encrypt / mcrypt_decrypt, возвращает другое значение PDO-запрос возвращает много кодов символов \ uXXXX, которые я не могу преобразовать в символы Unicode Простая форма PHP: Приложение к электронной почте (код гольфа) Как я могу получить адрес электронной почты пользователя и имя пользователя из кнопки входа в facebook? Создать продукт из модуля в preashashop Как обрабатывать загрузку файлов в распределенном приложении? Как указать, является ли пересылка «Жилой» в ИБП API? Предварительный просмотр изображения CKEditor и KCfinder на GoDaddy Удаленное изображение Dompdf не отображается в pdf

Запрос базы данных через Hive / Thrift в PHP не работает

Я пытаюсь запросить базу данных через Hive / Thrift в PHP. Тем не менее, я постоянно получаю сообщение об ошибке:

TSocket: timed out reading 4 bytes from XYZ 

Я использую код из

https://cwiki.apache.org/Hive/hiveclient.html#HiveClient-PHP

вместе с этим PHP Thrift Client

https://github.com/garamon/php-thrift-hive-client

Мой код:

 <?php $socket = new TSocket( 'XYZ', 12345 ); $socket->setSendTimeout(30 * 1000); $socket->setRecvTimeout(30 * 1000); $transport = new TBufferedTransport( $socket, 1024, 1024 ); $protocol = new TBinaryProtocol( $transport ); $client = new ThriftHiveClientEx( $protocol ); $transport->open(); $client->execute("my query"); ?> 

Примечание. Я могу подключиться к XYZ через консоль (команда telnet).

Я бы посоветовал любую помощь. Благодарю.

У меня была аналогичная проблема, начиная с тех же самых ресурсов. Оказывается, код не распознает, был ли он отключен или заблокирован порт. Я нашел эту статью, которая мне помогла:

https://issues.apache.org/jira/browse/THRIFT-347

В коде TSocket.php (garamon_base_dir / lib / transport) вы должны редактировать строки с 223 по 236.

Где он говорит:

 if( $buf === FALSE || $buf === '' ) { ... and if( $md['timed_out'] ) { ... and then again if( $md[timed_out'] ) { ... 

изменить на (соответственно):

 if( $buf === FALSE ) { ... and if( true === $md['timed_out'] && false === $md['blocked'] ) and finally if( true === $md['timed_out'] && false === $md['blocked'] ) 

Затем он начал работать после этого исправления. Удачи!