| Php multithread [mensaje nº404] |
Thu, 08 July 2010 09:05  |
bellnet Mensajes: 1 Registrado: July 2010 |
Jedi Youngling |
|
|
|
Hola, quisiera ver si alguin me pueda dar una mano, en el problema q me esta pasando. Tengo un sistema de newsletter, y el problema q tengo es que en el script de envio q utiliza sendmail, cuando los usuarios realizan los envios, esta tardando demasiado y mi idea es paralelizar los envios y no como esta ahora que realiza los envios de uno, estube investigando y no encontre nada que me sirva, saludos
|
|
|
| Re: Php multithread [mensaje nº405 es una respuesta al mensaje #404 ] |
Thu, 15 July 2010 17:36   |
|
Hola,
Hacer PHP multithread puede ser un poco complicado, y en este caso no tendria mucho sentido.
Mas bien, podrias hacer un sistema de "colas" donde cada cierto tiempo, el sistema corra un proceso (tipo cronjob) y este agarre X numero de correos los envie y termine.
Asi bien, podrias tener una tabla con la cola de correos, cada vez que envie uno lo borras o lo marcas como enviado o le pones una marca para saber si lo proceso, tons cada vez que inicias el proceso, haces un query por los emails que no tienen esa bandera.
Asi por ejemplo, digamos que tenemos una tabla de para la cola de correos electronicos, que contiene 1000 correos en cola. (Digamos que la tabla se llama "q_email"), esta tabla, se le puede poner un campo adicional que se llame "proceso" donde podrias guardar el numero del proceso de PHP que ejecuto el script.
Si estas en Unix, podrias ver el ID del proceso con la funcion posix_getpid http://us3.php.net/manual/en/function.posix-getpid.php
Asi podrias ejecutar el script varias veces, y enviar 100 correos por proceso y utilizar el campo de "proceso" en la tabla q_email para saber que correo se esta procesando y asi no tratar de enviarlo de nuevo.
Si no esta claro porfa avisame.
Pablo
Pablo Víquez
www.pabloviquez.com
https://twitter.com/pabloviquez
<?php echo 'If eval() is the answer, youre almost certainly asking the wrong question. - Rasmus Lerdorf'; ?>

|
|
|
| Re: Php multithread [mensaje nº406 es una respuesta al mensaje #405 ] |
Fri, 16 July 2010 07:52  |
 |
jesusvb Mensajes: 12 Registrado: April 2010 |
Jedi Youngling |
|
|
Es el sistema que yo uso para eso, para enviar un multiple correo a mis contactos comerciales.
Entre otras cosas basicas de como crearlas con las indicaciones de pviquez has de tener en cuenta varias cosas mas.
-La carga que te provoca el proceso, para evitar que donde este alojado el proceso no se moleste por una accion repetida de tanto proceso.
-El limite de salida de correos por hora. Algunos proveedores solo aceptan un numero x de correos por cuenta x hora. Es para evitar que la IP sea marcada como Spammer o reduzca la confianza de la IP.Consultalo, el mio solo acepta 250 por hora.
-De igual manera has de balancear los envios para evitar los mismo que lo anterior pero por parte del receptor. Si Hot, Yah, Gm reciben mas de x correos en x segundos por parte de la misma persona con el mismo asunto, mismo contenido, probablemente lo trate como spam y maque la IP como Spammer o reduzca la confianza de la IP.
Como veras, aparte de los procesos tecnicos, hay procesos del llamado 'entorno' que has de valorar para que todo funcione bien.
Saludos
JVB
No importa cuán estrecho sea el portal, cuán cargada de castigos la sentencia, soy el amo de mi destino: soy el capitán de mi alma. Invictus por William Ernest Henley
|
|
|