Avatar billede anderseiler Nybegynder
31. maj 2007 - 19:31 Der er 8 kommentarer og
1 løsning

Lang execution time

Hey

Jeg har nedenstående script... Nogen som kan fortælle, hvorfor det tager sindssygt lang tid at execute? Resten af siden kører i øvrigt ganske ok, så det er ikke generelt for forbindelsen.


$s['srv_ip'] = min IP som fungerer fint :)
$_POST['content'] = Mit nice content :)

$conn_id = ftp_connect($s['srv_ip']) or die("Couldn't connect to ".$s['srv_ip']);
    if (@ftp_login($conn_id, "username", "password"))
    {
        if (ftp_delete($conn_id, "fil.txt"))
        {
            $fp = fopen("ftp://username:password@".$s['srv_ip']."/fil.txt", "w");
                   
            if (fwrite($fp, $_POST['config']))
            {
                $_SESSION['error_alert'] = "ok";
                header('Location: /?p=header_myserver&path=ucp&sub=my_server_config&id='.$_GET['id']);
            }
        }
    }

Scriptet skal opdatere fil.txt ved først at slette den og så oprette den igen med indholdet fra $content...

Mvh
Anders
Avatar billede jakobdo Ekspert
31. maj 2007 - 21:26 #1
Det kunne måske skyldes ftp_login.

Du kan evt. teste dig lidt frem.
Prøv at se koden her på siden: http://www.php.net/microtime

Du kan jo starte med at smide: $time_start = microtime_float();
over ftp_login()
og $time_end = microtime_float(); under, så se hvad forskellen er!
Det kan du så gøre med hver funktione, og finde den som er er lang tid om det.
Det kan jo faktisk være en ftp server der er længe om at svare.
Avatar billede anderseiler Nybegynder
05. juni 2007 - 12:10 #2
Hej

Undskyld den lange svartid, men havde lige et par dage uden computer :/

Hvis jeg laver koden om til følgende, så får jeg bare en fejl, da execution time er over 30 sekunder. Før fik jeg ikke nogen fejl - der var den bare langsom. Desuden går det ret hurtigt med at hente indhold fra filerne. Der er der ingen ventetid.

Den nye kode var:

$s['srv_ip'] = min IP som fungerer fint :)
$_POST['content'] = Mit nice content :)

$conn_id = ftp_connect($s['srv_ip']) or die("Couldn't connect to ".$s['srv_ip']);
    $time_start = microtime_float();
    if (@ftp_login($conn_id, "username", "password"))
    {
        $time_end = microtime_float();
        if (ftp_delete($conn_id, "fil.txt"))
        {
            $fp = fopen("ftp://username:password@".$s['srv_ip']."/fil.txt", "w");
                   
            if (fwrite($fp, $_POST['config']))
            {
              $time = $time_end - $time_start;
              print $time;
            }
        }
    }

funktionen microtime_float har jeg tilføjet i toppen :)
Avatar billede jakobdo Ekspert
05. juni 2007 - 13:44 #3
Prøv denne kode:

$time_start = microtime(true);
$conn_id = ftp_connect($s['srv_ip']) or die("Couldn't connect to ".$s['srv_ip']);
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "FTP CONNECT in $time seconds<br />\n";

$time_start = microtime(true);
if (@ftp_login($conn_id, "username", "password"))
{
    $time_end = microtime(true);
    $time = $time_end - $time_start;
    echo "FTP LOGIN in $time seconds<br />\n";
   
    $time_start = microtime(true);
    if (ftp_delete($conn_id, "fil.txt"))
    {
        $time_end = microtime(true);
        $time = $time_end - $time_start;
        echo "FTP DELETE in $time seconds<br />\n";
       
        $time_start = microtime(true);
        $fp = fopen("ftp://username:password@".$s['srv_ip']."/fil.txt", "w");
        if (fwrite($fp, $_POST['config']))
        {
            $time_end = microtime(true);
            $time = $time_end - $time_start;
            echo "FTP WRITE in $time seconds<br />\n";
            $_SESSION['error_alert'] = "ok";
            header('Location: /?p=header_myserver&path=ucp&sub=my_server_config&id='.$_GET['id']);
            exit();
        }
    }
}
Avatar billede anderseiler Nybegynder
05. juni 2007 - 16:12 #4
Dunno how and dunno why - men med din kode kører hele scriptet super hurtigt! :)

Da jeg printede dine FTP WEEE IN TIME, så var de også alle under 0,0 sekunder :)

Hvad er den store forskel, som gør den så hurtig?

Og smid et svar, så får du point :)

Mvh
Anders
Avatar billede jakobdo Ekspert
05. juni 2007 - 16:23 #5
Min kode gør ingen forskel, den burde blot skrive hvor lang tid de forskellige funktioner er om at blive færdige.
Men jeg har tilføjet en exit(); efter din header() måske det kan være den du manglede tidligere?
Avatar billede anderseiler Nybegynder
05. juni 2007 - 16:27 #6
Hm, ved jeg ikke? Måske? Det kører i hvert fald hurtigt nu :)

Smid et svar m8 :)
Avatar billede jakobdo Ekspert
05. juni 2007 - 16:33 #7
Du får et svar!
Avatar billede jakobdo Ekspert
05. juni 2007 - 16:52 #8
Takker for point.
Avatar billede anderseiler Nybegynder
05. juni 2007 - 16:53 #9
så lidt :) takker for hjælp :) ses
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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