Мне нужна помощь. Я пытаюсь завершить свой сценарий, если он достигает 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(!@socket_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);
}
?>
Заранее спасибо.
Вам нужно будет добавить ini_set('max_execution_time', 59);
установите $ time_limit = 55, так как время выполнения php 60 секунд начнется раньше, чем ваш скрипт. Если вам нужно, чтобы он работал ровно в течение 60 секунд, я бы использовал тот же сценарий, но увеличил бы время выполнения до 65 секунд с помощью ini_set ();