मैं "बीकन" छवि का उपयोग करके वर्षों से ईमेल ट्रैक कर रहा हूं और उन ग्राहकों के लिए जो छवियों को डाउनलोड करने की अनुमति देते हैं, यह ट्रैक करने के लिए बहुत अच्छा काम किया है कि कितने लोगों ने ईमेल खोला है।PHP के साथ ईमेल ओपन लम्बाई ट्रैकिंग
मैं "DidTheyReadIt" सेवा में आया, जो दिखाता है कि क्लाइंट वास्तव में ईमेल कितनी देर तक पढ़ता है, मैंने इसे अपनी मुफ्त सेवा के साथ परीक्षण किया और यह वास्तव में ईमेल खोलने के समय के करीब है।
मैं इस बारे में बहुत उत्सुक हूं कि वे इसे ट्रैक करने की क्षमता कैसे प्राप्त करते हैं, मुझे यकीन है कि जो भी समाधान चुना जाता है, वह सर्वर/डेटाबेस पर बहुत अधिक भार डाल देगा और कई समुदाय "रोकें, नहीं और न करें "लेकिन मैं इसकी जांच करना चाहता हूं और इसे आज़माएं, भले ही मेरे लिए सर्वर पर परीक्षण चलाने के लिए पर्याप्त है और" नरक नहीं "कहें।
मैं कुछ googling किया था और इस लेख एक बुनियादी समाधान http://www.re-cycledair.com/tracking-email-open-time-with-php
मैं बीकन छवि पृष्ठ के भीतर नींद() का उपयोग कर एक परीक्षण किया जाता है जो पाया:
<?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);
}
?>
ऊपर कोड के साथ समस्या (डेटाबेस को हर सेकेंड अपडेट करने के अलावा) यह है कि जब स्क्रिप्ट चलती है तो यह तब भी चलती रहती है जब उपयोगकर्ता डिस्कनेक्ट हो (या इस मामले में किसी अन्य ईमेल पर जाता है)।
मैंने "ignore_user_abort (false);" जोड़ा, हालांकि मेल क्लाइंट के साथ कोई कनेक्शन नहीं है और हेडर पहले ही लिखे गए हैं, मुझे नहीं लगता कि "ignore_user_abort (false);" आग कर सकते हैं
मैं पद Track mass email campaigns और नीचे से ऊपर की एक को देखा "Haragashi" कहते हैं:
"आप बस एक ट्रैकिंग हैंडलर जो बाइट से नज़र रखने वाली छवि बाइट रिटर्न निर्माण कर सकते हैं के बाद हर बाइट प्रतिक्रिया फ्लश। और समय की अवधि के लिए सोने के।
आप का सामना करते हैं एक धारा अपवाद ग्राहक ई-मेल (नष्ट या किसी अन्य ई-मेल कौन जानता है के लिए बदल) बंद कर दिया है बंद कर दिया।
अपवाद के समय आप जानते हैं कि ग्राहक कितने समय तक ई-मेल पढ़ता है। "
क्या कोई जानता है कि मैं इस तरह "केवल एक ट्रैकिंग हैंडलर कैसे बना सकता हूं" या एक समाधान के बारे में जानता हूं जिसे मैं अपने कोड में कार्यान्वित कर सकता हूं जो उपयोगकर्ता डिस्कनेक्ट होने पर कोड को रोकने के लिए मजबूर करेगा?
ग्राहक रीडायरेक्ट का पालन नहीं करते हैं, इसलिए यह व्यावहारिक रूप से समझ में आने वाली किसी चीज से सैद्धांतिक उत्तर है। यह भी ओपी उद्धृत नहीं है। – hakre