Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с libssh2, Зависает во время ответа с сервера 
:(
    Опции темы
Parovoz33
Дата 22.10.2009, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 18.5.2007

Репутация: нет
Всего: нет



Доброго времени суток! Решаю такую задачу сейчас: скрипт заходит по SSH на сервер, и там вызыват консольные команды, причем работа идет в интерактивном режиме, то есть: вводится сначала одна команда, в поток вываливается ответ из нескольких строк и запрашивает мои действия, я отсылаю еще одну команду, мне опять приходит ответ и так далее. Я использую для этих целей расширение libssh2. 

Вот пример кода, который я использую:

Код

$conn = ssh2_connect(MY_HOST, 22);
if (!$conn) die("Could not connect!");
ssh2_auth_password($conn, MY_LOGIN, MY_PASS);
$stdio = ssh2_shell($conn);
sleep(1);

fwrite($stdio, "some command\n");
stream_set_blocking($stdio, true); 
stream_set_timeout($stdio, 10); 
$info = stream_get_meta_data($stdio); 

    while(($line = fgets($stdio)) && (!$info['timed_out'])){

        echo "LINE: ".$line;

                                $info = stream_get_meta_data($stdio); 
                                ob_flush; 
                                flush(); 
    }




Вроде бы все делал по учебникам. Но! Из-за вот этой команды:
Код

stream_set_blocking($stdio, true); 


почему то после получения последней строки ответа с сервера, скрипт просто зависает, и дальше ничего не выполняется. Я так понимаю, это виснет команда fgets. Можно конечно использовать sleep()  вместо этого, но время ответа очень часто меняется, и использование данной конструкции затрудняется. Кроме того, команда 

Код

stream_set_timeout($stdio, 10); 


явно не работает. Не знаю почему... Есть предположение что она не работает если к серверу подключаешься, используя SSL. Надеюсь описал мою проблему понятно. У кого какие предположение имеются? Буду признателен всем.

Это сообщение отредактировал(а) Parovoz33 - 22.10.2009, 01:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0693 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.