Visualizzazione dei risultati da 1 a 8 su 8

Discussione: tempo timeout server

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794

    tempo timeout server

    Ragazzi, sto provando ad inviare in una sola volta 200 email utilizzando la funzione mail() di php, ma dopo un po, mi da errore tempo di timeout esaurito..
    C'è una funzione che permette di modificarlo aumentandolo??
    Grazie mille...

  2. #2
    ..:: GSFLASH ::..
    HTTP://WWW.GSFLASH.IT
    MCTS - ACP - OCP - ECDL
    Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
    My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    No non c'è quello che voglio io ossia il settaggio del timeout..

  4. #4
    Dovresti impostare il set_time_limit, ma il problema è che tanti hosting non è che ti consentono di impostare valori tanto elevati e un invio in massa di 200 email può non essere consentito dal server di posta.

    L'ideale è quindi suddividere gli invii in gruppi di 10 email alla volta: ti crei un ciclo con un contatore, ad ogni ciclo reimposti il time limit per allungare la durata dello script:

    <?php

    set_time_limit(30);

    ?>

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Allora nel ciclo ho fatto così:
    $contatore = 1;
    $indice = 1;

    while($row_clienti = mysql_fetch_array($ris_clienti))
    {
    if ($contatore == 10*$i)
    {
    set_time_limit(30);
    $i +=1;
    }

    e nella continuazione del corpo del while invio le mail.. M facendo così, ho fatto in modo che ogni 10 mail, il set_time_limit si imposta a 30? A me da sempre lo stesso errore:

    Gateway Time-out
    The gateway did not receive a timely response from the upstream server or application.

  6. #6
    mi pare che devi incrementare anche il contatore e non solo l'indice.

    E comunque bisogna vedere se il tuo hosting permette di dettare il time limit.
    io ho messo 30 secondi che ricominciano a scorrere ogni volta che reimposti il time limit.

    Per alcuni clienti su aruba linux condiviso ti dico per certo che il set_time_limit e questo metodo di invio non sono riuscito a utilizzarlo, ma ho elaborato una soluzione semplicissima.

    io in ogni caso, ad ogni giro del while() faccio anche una query sul record così
    dispongo di un controllo sugli invii :
    Codice PHP:
    mysql_query("UPDATE iscritti  SET inviato=1 WHERE id_iscritto=$id_iscritto"); 
    poi sempre nel while tipo come hai fatto tu refresho la pagina
    Codice PHP:
    if ($contatore==10) {
    header("Refresh: 5; url=send.php?id_newsletter=".$id_newsletter); 
    exit;

    - $id_newsletter mi server per recuperare il contenuto della newsletter che voglio inviare
    - naturalmente la query principale che tira fuori gli iscritti la faccio con qualcosa tipo
    Codice PHP:
    "SELECT * from iscritti where inviato=0" 
    così ad ogni refresh tiro fuori solo quelli che mi servono

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    toglimi una curiosità:
    in questo punto url=send.php?id_newsletter=".$id_newsletter
    non dovrei passare anche l'indice e il contatore?

  8. #8
    nell''esempio che ti ho fatto non è necessario utilizzare un indice e il contatore è utilizzato solo internamente, per richiaamre il refresh, non è necessario passarlo in queristring.

    infatti ti ho detto che utlizzo anche una query dentro ogni ciclo per mettere inviato =1 ad ogni iscritto; quando il contatore è a 10 refresho la pagina e la query principale che estrae gli indirizzi da inviare tira fuori solo quelli successivi con inviato = 0. e così via fino a terminare.

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.