Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 14:08 Der er 14 kommentarer og
1 løsning

"oversættelse" af PHP-kode til delphi

hej eksperter...

jeg kunne godt tænke mig at få lavet følgende PHP-kode til en delphi-kode således jeg kan køre opgaven via et program!

php-koden:
------------------------------------------------------
<?

include("db.php");

$phptime = time();

if ($_GET[type] == 1) { // om det er planlagt, eller fremskudt
    $type = 1;
}
else {
    $type = 0;
}

function hentmicrotime() {
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}

$foresp = mysql_query("SELECT * FROM serv_server ORDER BY host ASC, port ASC") or die(mysql_error());
while($row = mysql_fetch_array($foresp)) {
    $id        = $row["id"];
    $host     = $row["host"];
    $port     = $row["port"];

    $start = hentmicrotime();

    if ($fp = @fsockopen($host,$port,$errno,$errstr,3)) {
        $slut = hentmicrotime();
        $svartid = $slut - $start;
        $respons = substr($svartid,0,6);
       
        fclose($fp);
       
        mysql_query("insert into serv_status (type,host,port,tidspunkt,respons) values ('$type','$id','$port','$phptime','$respons')") or die(mysql_error());
       
        $status .= "<b>" . $host . "</b> blev pinget på port <b>" . $port . "</b> med en svartid på <b>" . $respons . "</b> sek<br>";
    }
    else {
        mysql_query("insert into serv_status (type,host,port,tidspunkt,error) values ('$type','$id','$port','$phptime','$errno')") or die(mysql_error());
       
        $status .= "<b>" . $host . "</b> blev pinget på port <b>" . $port . "</b> men svarede ikke!    Følgende fejlmeddelse fremkom: <b>" . $errstr . "</b><br>";
    }
}
   
if ($type == 0) {
    echo $status;
}

?>
------------------------------------------------------

kan det lade sig gøre? :)

på forhånd tak
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 14:10 #1
mysql-tabellerne ser således ud:
-----------------------------------------------------------------
CREATE TABLE `serv_server` (
  `id` int(12) NOT NULL auto_increment,
  `host` varchar(55) NOT NULL default '',
  `port` int(12) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;


CREATE TABLE `serv_status` (
  `id` int(12) NOT NULL auto_increment,
  `type` int(1) NOT NULL default '1',
  `host` int(12) NOT NULL default '0',
  `port` int(12) NOT NULL default '0',
  `tidspunkt` int(12) NOT NULL default '0',
  `respons` varchar(55) NOT NULL default '',
  `error` int(12) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=229 ;
----------------------------------------------------------
Avatar billede vallemanden Nybegynder
10. oktober 2004 - 19:09 #2
er det din egen MySQL database server eller ligger den hos en udbyder?
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 19:10 #3
den ligger hos en udbyder, men kan godt komme til at ligge lokalt hvis det er en nødvendighed
Avatar billede vallemanden Nybegynder
10. oktober 2004 - 19:23 #4
Problemet er bare om vi kan få adgang til den via et program som ligger externt. normalt kan man kun via localhost, når det er hos en hp udbyder
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 19:26 #5
localhost er os fint for mig bare det kan lade sig gøre! så sætter jeg skam bare en mysql op på min maskine! :)

bare det er muligt at lave den php-kode om til delphi hehe
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 19:28 #6
forresten skal $status-beskederne ikke bruges til noget i delphi-programmet hvis det gør det nemmere :D
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 19:31 #7
for at være helt sikker på at der ikke er mere at lave en nødvendigt så skriver jeg lige den tilpassede kode her:
---------------------------------------------------------------------------
<?

include("db.php");

$phptime = time();

function hentmicrotime() {
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}

$foresp = mysql_query("SELECT * FROM serv_server ORDER BY host ASC, port ASC") or die(mysql_error());
while($row = mysql_fetch_array($foresp)) {
    $id        = $row["id"];
    $host    = $row["host"];
    $port    = $row["port"];

    $start = hentmicrotime();

    if ($fp = @fsockopen($host,$port,$errno,$errstr,3)) {
        $slut = hentmicrotime();
        $svartid = $slut - $start;
        $respons = substr($svartid,0,6);
       
        fclose($fp);
       
        mysql_query("insert into serv_status (type,host,port,tidspunkt,respons) values (1,'$id','$port','$phptime','$respons')") or die(mysql_error());
    }
    else {
        mysql_query("insert into serv_status (type,host,port,tidspunkt,error) values (1,'$id','$port','$phptime','$errno')") or die(mysql_error());
    }
}
   
?>
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 20:53 #8
er det noget du måske kan finde ud af?
Avatar billede vallemanden Nybegynder
10. oktober 2004 - 21:03 #9
Ja det tror jeg men har ikke tid til at kigge på det før mandag eller tirsdag :-/
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 21:05 #10
okay det ville hvert fald være supert :D så vender jeg tilbage der og ser om du har kunne finde ud af det!
Avatar billede vallemanden Nybegynder
10. oktober 2004 - 21:11 #11
hvad er det nøjaktig der skal ske?
Avatar billede vallemanden Nybegynder
10. oktober 2004 - 21:11 #12
vallemanden@night.dk -> MSN
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 21:13 #13
msn-adressen virkede ikke! min er jeg@elskermad.dk
Avatar billede vallemanden Nybegynder
10. oktober 2004 - 21:15 #14
??
Avatar billede elskermad.dk Nybegynder
02. december 2004 - 17:26 #15
skulle mene du har fået point i et andet spørgsmål for samme problem :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester