He estado rastreando correos electrónicos durante años usando una imagen "beacon" y para aquellos clientes que permiten que las imágenes se descarguen, ha funcionado muy bien para rastrear cuántas personas han abierto el correo electrónico.Email Open Length Tracking con PHP
Me encontré con el servicio "DidTheyReadIt" que muestra cuánto tiempo el cliente realmente leyó el correo electrónico, lo probé con su servicio gratuito y en realidad está muy cerca de las veces que abrí el correo electrónico.
Tengo mucha curiosidad en cómo logran la capacidad de rastrear esto, estoy seguro de que cualquiera que sea la solución elegida cargará mucho en el servidor/base de datos y que la comunidad responderá con "Detener, No y No ", pero quiero investigar esto y probarlo, incluso si es suficiente para hacer una prueba en el servidor y decir" no, no ".
he hecho un poco buscando en Google y encontré este artículo que tiene una solución básica http://www.re-cycledair.com/tracking-email-open-time-with-php
Hice una prueba con el sueño() dentro de la página imagen Faro:
<?php
set_time_limit(300); //1000 seconds
ignore_user_abort(false);
$hostname_api = "*";
$database_api = "*";
$username_api = "*";
$password_api = "*";
$api = mysql_pconnect($hostname_api, $username_api, $password_api) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_api, $api);
$fileName = "logo.png";
$InsertSQL = "INSERT INTO tracker (FileName,Time_Start,Time_End) VALUES ('$fileName',Now(),Now()+1)";
mysql_select_db($database_api, $api);
$Result1 = mysql_query($InsertSQL, $api) or die(mysql_error());
$TRID = mysql_insert_id();
//Open the file, and send to user.
$fp = fopen($fileName, "r");
header("Content-type: image/png");
header('Content-Length: ' . filesize($fileName));
readfile($fileName);
set_time_limit(60);
$start = time();
for ($i = 0; $i < 59; ++$i) {
// Update Read Time
$UpdateSQL = "UPDATE tracker SET Time_End = Now() WHERE TRID = '$TRID'";
mysql_select_db($database_api, $api);
$Result1 = mysql_query($UpdateSQL, $api) or die(mysql_error());
time_sleep_until($start + $i + 1);
}
?>
El problema con el código anterior (aparte de actualizar la base de datos cada segundo) es que una vez que se ejecuta el script, continúa ejecutándose incluso si el usuario se desconecta (o se mueve a otro correo electrónico en este caso).
Agregué "ignore_user_abort (false);", sin embargo, como no hay conexión con el cliente de correo y los encabezados ya están escritos, no creo que el "ignore_user_abort (false);" puede disparar
miré en el puesto Track mass email campaigns y uno desde el fondo "Haragashi" dice:
"Usted puede simplemente construir un manejador de rastreo que devuelve el byte de imagen de seguimiento a byte Después de cada byte a eliminar la respuesta. y dormir durante un período de tiempo.
Si se encuentra con una corriente excepción que el cliente ha cerrado la dirección de correo (eliminado o cambiado a otra dirección de correo que sabe) cerrado.
en el momento de la excepción usted sabe cuánto tiempo el cliente 'leyó' el correo electrónico ".
¿Alguien sabe cómo podría "simplemente crear un controlador de seguimiento" como este o conocer una solución que pueda implementar en mi código que forzará al código a dejar de funcionar cuando el usuario se desconecte?
Los clientes no siguen tanto los redireccionamientos, por lo que esta es más una respuesta teórica que algo que tiene sentido prácticamente. Además, esto no es lo que citó el OP. – hakre