Hello,

Het onderstaande script heb ik met pijn en moeite draaiend weten te krijgen. Echter als de te scannen server fysiek offline is (hij staat dus helemaal uit) duurt het 30 seconden voordat hij klaar is met scannen.

Wat moet ik aanpassen om dit te verkorten naar pakweg 2 a 5 seconden ?

<?php

set_time_limit(0);

$s_port = 12203; // Serverport
$s_ip = "82.217.212.106"; // Server-IP
$timeout = 2;

// CONN WRITE READ [1]
$s_con = fsockopen("udp://".$s_ip, $s_port,$errno, $errstr, $timeout);

// $s_con == false if fsockopen failed
if(!$s_con)
die(msg_server('Unable to connect with fsockopen [1];; '.$errstr));

// fwrite return false on write error, else it return how many bytes written
if(fwrite($s_con, "ÿÿÿÿ". chr (0x02). "getstatus". chr (0x00))===FALSE)
die(msg_server('Unable to write to $_con [1]'));

// fread return false on read error, else it return the read string
if(($ffb = fread($s_con,4))===FALSE)
die(msg_server('Unable to read from $_con after write. [1]'));

// stream_get_meta_data is same as socket_get_status
$meta_data = stream_get_meta_data($s_con);

if($meta_data["unread_bytes"]==0)
die(msg_server('server DOWN'));

$beginnen = fread($s_con, $meta_data['unread_bytes']);

fclose($s_con);

$data = explode("\n", $beginnen);

// Serverinfo

// CONN WRITE READ [2]
$s_con = fsockopen("udp://".$s_ip, $s_port,$errno, $errstr, $timeout);

if(!$s_con)
die(msg_server('Unable to connect with fsockopen [2];; '.$errstr));

if(fwrite($s_con, "ÿÿÿÿ". chr (0x02). "getstatus". chr (0x00))===FALSE)
die(msg_server('Unable to write to $_con [2]'));

// bytes lezen en verbindingsopbouw
if(($ffb = fread($s_con,4))===FALSE)
die(msg_server('Unable to read from $_con after write. [2]'));

$meta_data = stream_get_meta_data($s_con);

if($meta_data["unread_bytes"] == 0)
die(msg_server('No data, sorry. ('.$ffb.')'));

$beginnen = fread($s_con, $meta_data['unread_bytes']);

fclose($s_con);

msg_server('server ACTIEF');

function msg_server($server_status,$errmsg=''){
echo "
<div class='scanner' id='hoofd'>
<div class='picture'><img src='sc-moh.gif' alt='1' /></div>
<div class='status'>$server_status</div>
</div>";

}

?>
De maximum execution time van een PHP script is standaard 30 seconden. Die zou je kunnen verkorten naar bijvoorbeeld 5 seconden met:
<?php
set_time_limit (5);
?>
Werkt niet als PHP in de safe mode draait.
vreemd, hij blijft 30 seconden bezig en geeft daarna de maximum time of 5 seconds exeeded on line 20.
Ik neem aan dat hij dan in safe mode draait omdat hij niet de 5 seconden aanhoud ?

Reageren