Foros del Web » Programando para Internet » PHP »

duda con set_time_limit(0);

Estas en el tema de duda con set_time_limit(0); en el foro de PHP en Foros del Web. Buenas tardes, tengo una duda. quiero hacer el envio de mails (como ponia en un post anterior), a todos los usuarios de mi bd (usuarios ...
  #1 (permalink)  
Antiguo 15/09/2004, 12:34
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
duda con set_time_limit(0);

Buenas tardes, tengo una duda.

quiero hacer el envio de mails (como ponia en un post anterior), a todos los usuarios de mi bd (usuarios que han elegido recibir información en su mail). mi duda es, como tengo subido el script a un servidor web, si se excedera el tiempo de espera, es decir, que tarde mucho en cargar los mails de la bd y no se envie correctamente.

mi pregunta es, poniendo la funcion set_time_limit(0), conseguire que no me salga ese error?

salu2
  #2 (permalink)  
Antiguo 15/09/2004, 22:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si, .. en principio vía set_time_limit() ajustas el tiempo de ejecución para tu script (ten presente que mail() hasta que no envia el e-mail no devuelve el control a tu script PHP .. eso .. sumado a tus N e-mails que generar/enviar = podría resultar más de 30 segundos de média que suele dar por defecto la configuración de PHP típica para la ejecución de un script).

Con "0" dices algo tipo: "tarde lo que tarde el script en ejecutarse", Sería más recomendable usar vários minutos (se expresa en segundos) más que decir "0" (infinito) por si hay algún problema.

Un saludo,
  #3 (permalink)  
Antiguo 16/09/2004, 01:54
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
entonces que me recomiendas que ponga Cluster? la intención es que pueda enviar los aproximadamente 400 correos a todas las personas inscritas en mi boletin.

que tiempo deberia poner en el time_limit?

como se con certezA que se me enviaran todos los mail?

salu2
  #4 (permalink)  
Antiguo 16/09/2004, 02:15
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Certeza de envio no tendras nunca, como mucho de que llames a mail() 400 veces. Con set_time_limit(0) le das tiempo "infinito" de ejecucion, pero hay otras causas que puede hacer que se corte la ejecucion de un script. En http://www.php.net/manual/en/feature...n-handling.php ves que tambien puede ser causada por un abort del cliente remoto. Incluso el propio servidor web puede estar configurado para realizar un timeout pasado cierto tiempo (esto solo si lo ejecutas mediante un servidor web, claro). Y en PHP tambien tienes un limite de uso de memoria, asi que si tu script consume mas memoria de la configurada salta un error (prueba de ello es el buscador del foro, busca una palabra muy comun y veras el bonito mensaje de error).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 16/09/2004, 02:33
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias Josemi, y habria alguna manera de evitar esos errores que me dices? yo voy a hacer el envio desde mi linea de adsl de mi empresa, ya.com de 256Kb. tendria alguna manera de cerciorarme de que se han enviado? o la unica solución ponerme a mi el último registro de la bd, y comprobar si lo recibo?

salu2
  #6 (permalink)  
Antiguo 17/09/2004, 00:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. no es necesario ponerte a ti como último registro de la BD .. que mail() termine su proceso no implica que los e-mails lleguen a sus destinatarios, para eso tendrías que ver mejor los logs de actividad de tu servidor SMTP que uses (y que indicas en tu configuración de PHP o bien como lo uses).

Si tu bucle consigue ejecutarse completo y no ha dado algún problema sobre el tiempo de ejecución .. memoria que usó .. etc puedes hacer un simple:

echo "Terminé"; bajo el bucle que envia tus e-mails e incluso usar mail() bajo un if() para decir un "se envió" .. "falló" (con un flush() detras para forzar "ver" ese mensaje según se produzca cada envio de cada e-mail) (aunque ese "falló" sólo indicaría que no pudo PHP vía mail() conectar a tu servidor SMTP (a tu MTA usado concretamente) pero no si se "entregó" a su destinatario correctamente o fué rechazado o tu servidor SMTP lo puso en "relay" (para probar el envio o reintentos más tarde ...).

Sobre los temas de que cierres la ventana o no que inició tu proceso de envio de los e-mail's .. te recomiendo que veas el link que dejó josemi, concretamente:

http://www.php.net/manual/en/functio...n-function.php

así podrás iniciar el proceso y .. poder "cerrar" tu ventana/página que inicie el proceso de envio de los e-mails. En este caso . puedes ir creando un log básico en un archivo de texto plano por ejemplo con ese resultado de "se envió" o "no se envió" (usando las funciones fopen() .. fwrite()) o con Base de datos creandote una tabla para estos "log's" de envios.

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:51.