Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

PHPMailer en usleep

Pagina: 1
Acties:
  • 389 views

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Hey,

Op de website van PHPMailer (http://phpmailer.codeworxtech.com/index.php?pg=tip_pause) is te vinden dat webservers vaak een maximum aantal e-mails kunnen versturen binnen 1 minuut. Is dit te controleren op een externe webserver?
Nu is er ook een script te vinden die dit probleem tracht op te lossen door het gebruik van usleep(). Zie onderstaand voorbeeld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

/* The following code snippet with set the maximum execution time
 * of your script to 300 seconds (5 minutes)
 * Note: set_time_limit() does not work with safe_mode enabled
 */

$safeMode = ( @ini_get("safe_mode") == 'On' || @ini_get("safe_mode") === 1 ) ? TRUE : FALSE;
if ( $safeMode === FALSE ) {
  set_time_limit(300); // Sets maximum execution time to 5 minutes (300 seconds)
  // ini_set("max_execution_time", "300"); // this does the same as "set_time_limit(300)"
}

echo "max_execution_time " . ini_get('max_execution_time') . "<br>";

while (1==1) {
  set_time_limit(30); // sets (or resets) maximum  execution time to 30 seconds)
  // .... put code to process in here
  
  usleep(1000000);
  
  if (1!=1) {
    break;
  }
}

?>


In bovenstaande code staat wel waar ik het script moet neerzetten, maar ik neem aan dat niet het gehele script while loop moet komen te staan, of wel?
Nu heb ik op dit moment onderstaand scriptgedeelte (van PHPMailer in gebruik). Hoe kan ik bovenstaande code integreren in mijn bestaande php script?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$mail = new PHPMailer();

$mail->From     = $emailreactie;
$mail->FromName = "Naam";
$mail->IsSMTP();
$mail->Host       = "mail.naam.nl";
$mail->Mailer   = "smtp";

while ($row = mysql_fetch_array ($sql_mailing))
{
if(!$mail->Send())
        echo "Er is iets fout gegaan tijdens het versturen van de mailing (zie onderstaande gegevens).<br /><br />" .  $mail->ErrorInfo . "<br>";

    // Clear all addresses and attachments for next loop
    $mail->ClearAddresses();
    $mail->ClearAttachments();
}
}


Ik kan namelijk de code niet al te vaak testen, aangezien dan elke keer een e-mail wordt gestuurd naar de gehele mailinglist. Dus vandaar deze vraag.

[ Voor 5% gewijzigd door radem205 op 18-10-2008 17:11 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 02:24

Creepy

Tactical Espionage Splatterer

Elke server heeft weer eigen limieten. Er is maar één manier om dat uit te vinden: zo veel mogelijk proberen te sturen. Ik kan je wel vertellen dat als je ergens een shared hosting accountje afneemt je hosting provider waarschijnlijk niet zo blij gaat zijn als iedereen zomaar flinke mailings probeert te versturen dus informeer gewoon bij je hoster wat voor jou de limiten zijn met betrekking tot het versturen van e-mail.

En denk gewoon zelf eens na (niet lullig bedoelt) voor het integreren van de code. Je geeft zelf al precies aan wat je zou moeten doen. Het gaat om 1 regeltje code uit het ene script dat je in het andere script moet stoppen. Als je het tweede stuk code zelf hebt geschreven dan is dat echt niet moeilijk om zelf te verzinnen.

Ga er gewoon mee aan de slag en informeer eens bij je hoster, zij kunnen je zeer waarschijnlijk verder helpen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.