¿Instalar mySql?
Otra puede ser ordenar el archivo y hacer una busqueda binaria: Guardas la
cantidad de mails como primer linea, y comparás contra el primero. Si el
tuyo es mayor al primero, comparás con el último. Si es menor al ultimo,
comparás con el que esta justo en la mitad. Si es menor, comparás con el que
esta en la posición 1/4 de la lista, si no, con la que esta 3/4. Seguís
dividiendo hasta que encuentres donde va.
En 5000 mails, deverías hacer no mas de 10 divisiones , 10 fseek, y 10
comparaciones. Lo que no se es que tanto tiempo tarda el fseek, pero supongo
que vale la pena probar.
----- Original Message -----
From: "Walter D. Funk" <walter@netcomproject.com>
To: <lista@phpes.com>
Sent: Friday, March 28, 2003 3:55 PM
Subject: [PHP-ES] Consulta sobre performance
Tengo una tabla 'mailing' donde guardo direcciones de email,
posteriormente desde esa tabla se envia un newsletter a todos los mail
contenidos.
hasta aca esta todo bien
por otro lado, para agregar las direcciones de mail al listado, hay un
script que lee un archivo plano de texto, del cual extrae todas las
direcciones de mail validas y las agrega a la table 'mailing' .
para no agregar direcciones de mail repetidas, lo que hago antes de insertar
una nueva direccion de mail es verificar que dicho email no exista en la
tabla, lo que en algunos caso produce un time-out . probe con
set_time_limit(0) pero aun asi el script se corta.
el punto es que si la table tiene 5000 direcciones de mail cargadas, e
intento cargar 1000 direcciones nuevas, se produciran 5000 x 1000
comparaciones, es decir 5000 comparaciones por cada nueva direccion de mail
que se intenta insertar.
la consulta es, si alguien conoce alguna manera de optimizar este proceso?
Walter David Funk
Departamento de Programación e Investigación
NetcomProject.com
-----------------------------------------
Buenos Aires - AR
---------------------------------------------------------------------
Archivo On-line:
http://www.phpes.com/via news: news://news.phpes.com/
Manual PHP en español:
http://www.php.net/manual/es/Para dar de baja la suscripción, mande un mensaje a:
lista-unsubscribe@phpes.com
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.463 / Virus Database: 262 - Release Date: 17/03/03