Avatar billede wiesemarc Nybegynder
22. marts 2005 - 16:18 Der er 4 kommentarer og
1 løsning

IMAP script er langsom

Jeg har en php script, hvor jeg connecter til en IMAP server..
Mail-server og web-server er samme server..

Mit problem er at det tager en krig bare at læse en mail (tager ca. 1 min), det er ikke min internet forbindelse til serveren, for serveren er på en 622Mbit(i tyskland) og har selv 100Mbit Og jeg kan sagtens download fra serveren med 6-7 Mb/s så det er ikke problemet..


Mit script:

<?
function GetMicroTime(){
    list($ms, $s) = explode(" ",microtime());
    return ((float)$ms + (float)$s);
}
$StartTimer = GetMicroTime();

$i = $_GET[id];


$mbox = imap_open("{min server}", "min bruger", "min kode");

echo "<p><h1>Headers in INBOX</h1>\n";
$headers = imap_headers($mbox);
$no = 1;
if($_GET[mode] == ''){
    if ($headers == false) {
      echo "Call failed<br>\n";
    } else {
      while (list ($key,$val) = each ($headers)) {
          echo "<a href='?mode=view&id=$no'>".$val."</a><br>\n";
          $no=$no+1;
      }
    }
}elseif($_GET[mode] == 'view'){
    $message = imap_fetchheader($mbox, $i);
    $msgText = ereg_replace("\r\n", "<br>\n", $message);
    echo "$msgText<hr>";
    $text=imap_body($mbox,$i);
    echo $text;
}

    imap_close($mbox);


$StopTimer = GetMicroTime();
$CPUtime = $StopTimer - $StartTimer;
?>

Generated in: <b><? printf("%.5f", $CPUtime); ?></b> s.
Avatar billede wiesemarc Nybegynder
22. marts 2005 - 16:26 #1
bruger faktisk "localhost:110/pop3" i 'min server'
Avatar billede coderdk Praktikant
23. marts 2005 - 17:25 #2
Prøv denne:

<?
function GetMicroTime(){
    list($ms, $s) = explode(" ",microtime());
    return ((float)$ms + (float)$s);
}
$StartTimer = GetMicroTime();

$i = $_GET[id];


$mbox = imap_open("{min server}", "min bruger", "min kode");

echo "<p><h1>Headers in INBOX</h1>\n";
$no = 1;
if($_GET[mode] == ''){
    $headers = imap_headers($mbox);
    if ($headers == false) {
      echo "Call failed<br>\n";
    } else {
      while (list ($key,$val) = each ($headers)) {
          echo "<a href='?mode=view&id=$no'>".$val."</a><br>\n";
          $no=$no+1;
      }
    }
}elseif($_GET[mode] == 'view'){
    $message = imap_fetchheader($mbox, $i);
    $msgText = ereg_replace("\r\n", "<br>\n", $message);
    echo "$msgText<hr>";
    $text=imap_body($mbox,$i);
    echo $text;
}

    imap_close($mbox);


$StopTimer = GetMicroTime();
$CPUtime = $StopTimer - $StartTimer;
?>

( Jeg har blot flyttet imap_headers() ind i den ene if, da du ellers henter alle headers når du skal vise én )
Avatar billede wiesemarc Nybegynder
23. marts 2005 - 22:50 #3
Det fungerede rimeligt godt, og nu kan de bedre indsætte i min database ???
Har du meget forstand på IMAP og PHP ??
Hvis Ja, ville jeg gerne høre om din support til et mindre projekt (ingen penge i det nu eller noget), bare dig som guide ?

P.s læg et svar :o)
Avatar billede wiesemarc Nybegynder
23. marts 2005 - 22:50 #4
hvis du er interesseret i at høre mere om det er jeg på msn wiese[at]wiesedesign[dot]com
Avatar billede coderdk Praktikant
23. marts 2005 - 22:54 #5
Her er lige et svar!

Jeg har ikke rodet specielt meget med med det, kun lige et par grundlæggende tests ;) Men hvis du har nogle problemer kan du bare skrive i denne tråd, så kigger jeg på det når jeg får tid ;)
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