Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Dividere l'invio di email in gruppi di 30

    Salve, ho un problema su altervista.
    Il server riesce ad inviare solo 3 email ogni due secondi, quindi invia solo le prime tre e poi non ne invia altre.

    Io ho aggirato l'ostacolo inserendo uno usleep (670000) che fa una pausa di 0,67 secondi ogni email inviata.

    Il problema adesso è il timeout della pagina che è pari a 30 secondi
    In pratica dopo l'invio di circa 40 email la pagina va in timeout e blocca l'invio delle successive.

    Qualcuno sa suggerirmi una stringa da aggiungere alla seguente che possa dividere l'invio in gruppi da 30 o 40 email, in modo che la pagina non vada in timeout?

    Codice PHP:
    if(!(@mail($row["email"],$subject[2],$body_s,"From: $support_email")))
    $errarr[$i]=$row["email"]; $i++; } 
    usleep(670000); 
    Ringrazio sentitamente
    Dario

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Devi inviare la stessa identica email a tutti?
    Metti tutti gli indirizzi nel campo ccn, così con un invio arriva a tutti e ognuno pensa che l'hai mandata solo a lui dato che gli altri destinatari sono nascosti.

    Fa una prova e vedi se ti è permesso farlo.

  4. #4
    No!
    Il contenuto delle email è diverso per ciascun utente, in quanto in automatico dovrebbe inviare la statistica di ciascun utente.

    Il Sito è uno scambio visite surf e quindi dovrà inviare in automatico ogni settimana la statistiche di siti visitati e crediti guadagnati diverso per ciascun membro.

    A me interesserebbe dividere l'invio in blocchi da 30 email o al massimo 40 per ogni ciclo, altrimenti la pagina va in timeout.

    Grazie per la risposta
    Dario

  5. #5
    prova con (devi avere le mail in un array naturalmente)
    http://php.net/manual/en/function.array-chunk.php

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  6. #6
    Purtroppo su altervista php.ini è impostato su safe mode e non è possibile cambiarlo

    Sarebbe stato interessante aggiungere la stringa set_time_limit (300) per inviare circa 450 email in 5 minuti (dopo sarebbe andato in timeout)


    whisher - prova con (devi avere le mail in un array naturalmente)
    http://php.net/manual/en/function.array-chunk.php
    La stringa è quella postata sopra.
    Ritieni si possa fare?
    Se ritieni di si, per favore indicami cosa devo aggiungere a quella stringa.
    Grazie.
    Dario

  7. #7
    dal codice che vedo presumo che tu recuperi le mail
    dal db posta + codice svp.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  8. #8
    whisher - dal codice che vedo presumo che tu recuperi le mail dal db posta + codice svp.
    No le recupero dal database Mysql tabella user campo email
    Ti allego tutto il contenuto del file

    Codice PHP:
    <? 
     $query 
    "update ".$t_clear." set date=".(mktime(0,0,0,date("m"),date("d"),date("Y"))); $result MYSQL_QUERY($query); $query "select distinct(email),name,credits,id from ".$t_user." where tmp_mail<".(mktime()-(60*60*24)); //die($query); $result = MYSQL_QUERY($query); $i=0; while($row = mysql_fetch_array($result)){ $query1 = "select * from ".$t_site." where idu=".$row["id"]." "; $result1 = MYSQL_QUERY($query1); $body_s=preg_replace ("[\[name\]]",$row["name"], $body[2][1]); $body_s=preg_replace ("[\[email\]]",$row["email"], $body_s); $body_s=preg_replace ("[\[id\]]",$row["id"], $body_s); $body_s=preg_replace ("[\[credits\]]",$row["credits"], $body_s); while($row1 = mysql_fetch_array($result1)){ $str=""; $str=preg_replace ("[\[site\]]",$row1["site"], $body[2][2]); $str=preg_replace ("[\[url\]]",$row1["url"], $str); $str=preg_replace ("[\[hits\]]",$row1["pokaz"], $str); $z=0; for($j=0;$j<=6;$j++){ $z=$z+$row1["p$j"]; } $str=preg_replace ("[\[last_mail\]]",$z, $str); $str=preg_replace ("[\[credits1\]]",$row1["credits"], $str); if($row1["b"]==0){$str=preg_replace ("[\[state\]]","Disabilitato", $str);}elseif($row1["b"]==1){$str=preg_replace ("[\[state\]]","In attesa", $str);}elseif($row1["b"]==2){$str=preg_replace ("[\[state\]]","Abilitato", $str);}; $body_s=$body_s.$str; } $query1 = "select sum(p1),sum(p2),sum(p3),sum(p4),sum(p5),sum(p6),sum(p0) from ".$t_site." where idu=".$row["id"]." "; $result1 = MYSQL_QUERY($query1); $body_s=$body_s.$body[2][3]; for($i=0;$i<=6;$i++){ $str=""; $str=preg_replace ("[\[date_r\]]",date( "d.m.Y", mktime(0,0,0,date("m"),date("d")-7+$i,date("Y"))), $body[2][4]); $str=preg_replace ("[\[receive\]]",round(100*mysql_result($result1,0,"sum(p$i)"))/100, $str); $body_s=$body_s.$str; } $query1 = "select sum(c1),sum(c2),sum(c3),sum(c4),sum(c5),sum(c6),sum(c0) from ".$t_user." where id=".$row["id"]." "; $result1 = MYSQL_QUERY($query1); $body_s=$body_s.$body[2][5]; for($i=0;$i<=6;$i++){ $str=""; $str=preg_replace ("[\[date_e\]]",date( "d.m.Y", mktime(0,0,0,date("m"),date("d")-7+$i,date("Y"))), $body[2][6]); $str=preg_replace ("[\[earn\]]",round(100*mysql_result($result1,0,"sum(c$i)"))/100, $str); $body_s=$body_s.$str; } $body_s=$body_s.$body[2][7]; print $row["email"]."
    ".$subject[2]."
    ".nl2br(
    $body_s)."
    "; if(!(@mail(
    $row["email"],$subject[2],$body_s,"From$support_email"))){ $errarr[$i]=$row["email"]$i++; } usleep(670000); //AGGIUNTA DI UNA PAUSA TRA UNA MAIL E L'ALTRA PARI A 0,67 SECONDI $query4 = "update ".$t_user." set tmp_mail=".mktime()." where id=".$row["id"]$result4 = MYSQL_QUERY($query4); } $query = "update ".$t_user." set c0=0,c1=0,c2=0,c3=0,c4=0,c5=0,c6=0"; $result = MYSQL_QUERY($query); $query = "update ".$t_site." set p0=0,p1=0,p2=0,p3=0,p4=0,p5=0,p6=0"; $result = MYSQL_QUERY($query); ?>

  9. #9
    devi semplicemente mettere quello che ti serve in un array tipo
    Codice PHP:
    $data = array();
    while (
    $row mysql_fetch_array($resultMYSQL_ASSOC)) {
        
    $data[] =  $row;  

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  10. #10
    Grazie mille
    Dario

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.