2014-09-23 4 views
0

Мне нужна помощь. Я пытаюсь завершить мой скрипт, если он достигает 60 секунд, если он не может подключиться к серверу, но я всегда поймал на 60 секунд ограничение времени выполнения. Я думаю, мой код не работает.завершить скрипт в течение 60 секунд

<?php 
$time_limit = 60; 

set_time_limit ($time_limit); 

if(isset($_GET['comm'])){ 

    $command = $_GET['comm']; 

    $host = "xxx.xx.xxx.xx"; 
    $port = xxxx; 

    $start_time = time(); 
    $message = $command; 
    $socket = socket_create(AF_INET, SOCK_STREAM,0) or die("Could not create socket\n"); 

    while([email protected]_connect($socket, $host, $port)){ 

     if ((time() - $start_time) >= $time_limit) 
     { 
      socket_close($socket); 
      die("Connection timed out.\n"); 
     } 

     sleep(1); 
     continue; 

    } 

    socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n"); 
    $resultserv = socket_read ($socket, 1024) or die("Could not read server response\n"); 



    $curl = curl_init(); 

    curl_setopt_array($curl, array(
     CURLOPT_RETURNTRANSFER => 1, 
     CURLOPT_URL => 'http://tomysite/receive.php', 
     CURLOPT_POST => 1, 
     CURLOPT_POSTFIELDS => array(
      'recrespond' => $resultserv 

     ) 
    )); 

    $resp = curl_exec($curl); 

    curl_close($curl); 

    echo $resultserv; 

    socket_close($socket); 

} 

?> 

Заранее спасибо.

+0

http://stackoverflow.com/questions/5164930/fatal-error-maximum-execution-time-of-30-seconds-exceeded, вы также явно не можете установить тайм-аут на 60, если это временный лимит php а также это должно быть на уровне 59. – mschuett

ответ

0

Вы должны были бы добавить ini_set('max_execution_time', 59);

+0

Я считаю, что он хочет, чтобы функция таймаута до достижения предельного срока. – mschuett

+0

, но оп не упоминал об этом ?? –

+0

Да, я знаю, но, глядя на код, я вполне уверен, что он этого хочет. Вопрос совсем не сформулирован. – mschuett

0

установить $ time_limit = 55 с момента времени выполнения PHP 60 секунд собираются начать, прежде чем ваш скрипт делает. Если вам нужно, чтобы он выполнялся ровно в течение 60 секунд, я использовал бы тот же скрипт, но увеличил бы время выполнения до 65 секунд, используя ini_set();

+0

ok Я попробую поблагодарить вас – kelly123

+0

Я добавляю это ini_set ('max_execution_time', 59) ;, тогда $ time_limit = 55; set_time_limit ($ time_limit), но сценарий не закончился – kelly123

+0

не использовать set_time_limit. вы говорите, что ваш скрипт может работать только 55 секунд, когда вы это делаете, и он переопределяет ini_set(); – mschuett

Смежные вопросы