Прервать сценарий PHP, пытаясь подключиться через SSH с помощью запроса Ajax? - PullRequest
0 голосов
/ 12 июля 2011

Bonjour, Я пытаюсь подключиться к маршрутизатору с PHP и phpseclib .

<?php
    function connect_ssh(){

    set_time_limit(10);
    ob_start();

    register_shutdown_function('shutdown');

    if(connection_aborded()){
       die();
    }


    function shutdown(){
       print ob_get_clean();
    }

       $res = array();
       $a = new Net_SSH2($host);

       $a->write("show time\r\n");


     try{
        $res[] = $a->read('\r\n');
        $res[] = $a->read('\r\n');
        $res[] = $a->read('#');

     } catch(Exception $e)
     {    

          ob_flush();
          var_dump(compact('e','res'));
     }


    } return json_encode(compact('e','res'));?>

Я вызываю эту функцию, используя jQuery:

$.ajax({
 url:'myURL',
 data: null,
 type: 'POST',
 dataType: 'json',
 success: function(z){ console.log(z);}
});

Я бы хотел остановить свой php-скрипт на demande, потому что иногда «Net_SSH2 :: read ()» не выполнялся, если параметр не найден в ответе routeur. (т.е. если есть синтаксическая ошибка).

Чем чаще я не могу повторно подключиться к своему веб-серверу после неудачного запроса, и мне приходится долго ждать или даже перезагрузить Apache ...

Спасибо за вашу помощь ...

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

вы можете установить ниже max_execution_time во время выполнения:

ini_set('max_execution_time', 10); // maximal execution time in seconds

Это гарантирует, что сам скрипт завершится через 10 секунд, даже если он не был завершен.Время, которое вы должны выбрать, в зависимости от того, сколько времени это займет.

0 голосов
/ 12 июля 2011

Сделайте так, чтобы он проверял базу данных в цикле и отправлял бит AJAX в другой скрипт, который просто вставляет значение выхода в базу данных.

РЕДАКТИРОВАТЬ: Я не уверен, что я полностью понимаю ваш код, но вот что я бы сделал:

function() {
    $con = database_of_choice($host, $user, $pass, $db);
    while (!$quitter) {
        $r = $con->query('SELECT shouldquit FROM info LIMIT 1');
        if ($r['shouldquit'] == 'quit') {
            $quitter = true;
            continue;
        }
        //important connection stuff here...      
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...