larger smaller normal text version of this page
Translations: en fr nl ja

phplist Documentación » Configuración »

Configurar la velocidad de envío



Muchas personas utilizan phpList en un hosting compartido. En general se trata de un ordenador que maneja muchos sitios simultaneamente. Esto quiere decir que si un sitio intenta dominar el CPU o hace altas demandas sobre los recursos del servidor, los demás sitios sufriran.

Por esta razón, muchos proveedores limitan el número de mensajes que un sólo sitio puede enviar por hora o por día. Es su trabajo de asegurar que ningún sitio perjudique el funcionamiento de los demás sitios que dependen del mismo servidor. Una segunda razón de limitar el volumen de emails, es que los proveedores quieren evitar hospedajear a 'spammers'.

Entonces, cuales son las implicaciones para usuarios legítimos? Es necesario averiguar con su proveedor si existe algún limite, antes de enviar el primero mailing. Pregunte: Hay un límite por día? Hay un límite por hora? Es probable que los hay. En este caso, puede utilizar los siguientes ajustes en config.php para limitar la velocidad de envío de phpList.

esta parte de config.php
# Proceso por lotes
# Si está en un hosting compartido, probablemente será apreciado si no envía toneladas
# de mensajes en una sóla tanda. Para lograr esto puede configurar el proceso por lotes.
# Por favor note, que los siguientes dos valores pueden ser eliminados por su ISP utilizando
# una configuración de servidor global. Por lo que si nota estos valores diferentes a la
# realidad, ese puede ser el caso.

# Defina el número de e-mails que desea enviar por periodo. Si es 0, el proceso por lotes
# se deshabilita y los mensajes son enviados tan rápido como sea posible.
define("MAILQUEUE_BATCH_SIZE",0);

# Defina la duración de un periodo de proceso por lotes, en segundos (3600 una hora)
define("MAILQUEUE_BATCH_PERIOD",3600);

# Para evitar la sobrecarga del servidor que envía los mensajes, puede agregar un pequeño retraso
# entre cada envío, para aligerar la carga de envío.
# Deberá encontrar un buen valor para su propio servidor.
# El valor es en segundos (o puede probar con autothrottle debajo)
define('MAILQUEUE_THROTTLE',0);



Limitar la velocidad de envío


phpList (hasta la versión 2.10.4) es capable de enviar aproximadamente 3000 emails personalizados por hora, o aproximadamente 5000 emails no-personalizados por hora. Considerando que la mayoría de los proveedores de hosting compartido no permitirán mandar un volumen tan alto de mensajes, y que impondrán alguna limitación, phpList ofrece dos métodos para manejar estas limitaciones: proceso por lotes y "mailqueue throttle". La selección de proceso por lote o "mailqueue throttle" es en fondo una preferencia personal, aunque el uso de mailqueue throttle puede ser más apto para servidores con PHP-cgi (ver The three interfaces op PHP).


Proceso por lotes

Con proceso por lotes, dos ajustes son relevantes para enviar no más que N emails durante un periodo de T segundos, donde:
N es MAILQUEUE_BATCH_SIZE
T es MAILQUEUE_BATCH_PERIOD
Estos ajustes forzan phplist a "restingirse" y evitar que se envíe todo los emails de una vez.

Suponiendo por ejemplo que el limite por hora impuesto por su proveedor es de 400 emails. Quiere esto decir que hay que definir MAILQUEUE_BATCH_SIZE en 400...? No!
Porque no? Porque es necesario tomar en cuenta otros emails, como los pedidos de confirmación, así como otros emails de sistema, o emails enviado por otras aplicaciones que puede tener en su sitio.

Hay que tener una margen segura. Por ejemplo, si tiene 24 nuevas suscripciones por día, tiene que sustraer aproximadamente 5. Si tiene otros programas que manden emails, habrá que bajar aún más. Una margen comfortable para una pequeña instalación sería entre 20 y 40 emails abajo del límite por hora, o sea, aproximadamente 360 emails en este ejemplo.

Ejemplo:
# Enviar en lotes de 360 emails por periodo de proceso por lotes:
define("MAILQUEUE_BATCH_SIZE",360);

# Periodo de proceso por lotes, configurado en 3600 seconds (=1 hora):
define("MAILQUEUE_BATCH_PERIOD",3600);

# Pausa entre emails (en segundos) para evitar la sobrecarga del servidor:
define('MAILQUEUE_THROTTLE',1);


Si su servidor tiene PHP-cgi, es posible que tenga problemas con "timeouts" (ver The three interfaces op PHP). En este caso se sugiere utilizar una duración más corta de un periodo de proceso por lotes, por ejemplo un periodo de 10 minutos.

Ejemplo:
# Enviar en lotes de 60 emails por periodo de proceso por lotes:
define("MAILQUEUE_BATCH_SIZE",60);

# Periodo de proceso por lotes configurado en 600 segundos (= 10 minutos):
define("MAILQUEUE_BATCH_PERIOD",600);

# Pausa entre emails (en segundos) para evitar que se sobrecargue el servidor:
define('MAILQUEUE_THROTTLE',1);



Mailqueue throttle

El ajuste MAILQUEUE_THROTTLE insierre una pausa (en segundos) entre cada email, i.e. sirve para repartir el envío de los emails. Mientras es posible utilizar este ajuste para evitar que se sobrecargue el servidor con un repentina 'explosion' de emails, también es posible utilizarla como alternativa para el proceso por lotes. Por ejemplo, si se insierre una pausa de 10 segundos entre los emails, de hecho estará enviando no más que 360 emails por hora.

Ejemplo:
# Proceso por lotes deshabilitado:
define("MAILQUEUE_BATCH_SIZE",0);

# Batch_period no tiene relevancia si proceso por lotes está deshabilitado:
define("MAILQUEUE_BATCH_PERIOD",3600);

# Pausa entre emails (en segundos) para enviar no más que 360 emails por hora:
define('MAILQUEUE_THROTTLE',10);



Ajustes experimentales: "auto throttle" y "domain throttle"


# Mailqueue autothrottle
# This will try to automatically change the delay
# between messages to make sure that the MAILQUEUE_BATCH_SIZE (above) is spread evently over
# MAILQUEUE_BATCH_PERIOD, instead of firing the Batch in the first few minutes of the period
# and then waiting for the next period. This only works with mailqueue_throttle off
# it still needs tweaking, so send your feedback to mantis.tincan.co.uk if you find
# any issues with it
define('MAILQUEUE_AUTOTHROTTLE',0);

# Limitante para Dominios
# Puede activar la limitante para dominios, mediante la puesta a 1 de USE_DOMAIN_THROTTLE
# Defina la cantidad máxima de e-mails que desea enviar a cualquier dominio y el número de
# segundos para esa cantidad. Esto asegurará que no envía demasiados e-mails a un mismo dominio
# lo cual puede causarle un blacklisting. Particularmente los proveedores más grandes son
# quisquillosos con esto.
# Esta funcionalidad puede causar un incremento dramático en el tiempo necesario para
# enviar un mensaje, dependiendo en cuantos usuarios tenga con el mismo dominio (ej. hotmail.com).
# Si le ocurren demasiadas fallas para la limitante, el proceso de envío agregará un retraso extra
# para tratar de mejorar esto. El ejemplo envía 1 mensaje cada 2 minutos.
define('USE_DOMAIN_THROTTLE',0);
define('DOMAIN_BATCH_SIZE',1);
define('DOMAIN_BATCH_PERIOD',120);



Tips & tricks del foro




Páginas relacionadas


CategoryDocumentation
Page was generated in 0.2382 seconds