2014-02-06 68 views
0

我想跟蹤用戶在通過我發送的郵件上花費的秒數。 我已經使用了一個PHP腳本。如何使用php跟蹤電子郵件的閱讀時長?

<?php 
// Time the request 
$st = time(); 
$t = $st; 
$ft = $st + 30; 
ignore_user_abort(true); 
set_time_limit(0); 
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
syslog(LOG_ERR,"URL : ".$actual_link); 

while($st < $ft) 
{ 
    // Did the connection fail? 
    echo "HI \n"; 
    flush(); 
    ob_flush(); 
    if(connection_status() != 0) 
     { 
      $duration1 = time() - $t; 
      syslog(LOG_ERR,"SKIM : User Stopped For TIME: ".$duration1); 
      break; 
     } 

    // Sleep for 1 seconds 
    sleep(1); 
    $st = $st + 1; 
} 
if($st >= $ft) 
{ 
    $duration = $st - $t; 
    syslog(LOG_ERR,"READ : User Stopped For TIME: ".$duration); 
} 
?> 

它在郵件的內容通過HTML調用像

<body> 
<img src="http://url.../openduration.php/> 
</body> 

現在讀郵件的持續時間總是顯示大多不考慮持續時間我需要讀它23秒。之後,我試圖關閉郵件,但沒有效果。儘管當我在本地服務器上的網頁上嘗試時腳本完美無缺,但我僅嘗試使用Gmail。

+0

您是否在談論電子郵件的加載時間? –

+0

加載基本內容後,我調用腳本。 基本上用於跟蹤讀取持續時間。 –

+0

大多數Webmail客戶端(例如Gmail和Outlook)都使用圖像代理來異步加載每封電子郵件中的圖像。由於圖像以這種方式加載,它們將繼續加載,直到連接超時,即使讀者已從消息中移開。然而,仍然有許多電子郵件客戶端允許讀取時間來測量這種方式,所以使用[託管服務](https://shiftmail.io)將減少數十小時捕捉所有這些邊緣情況。 – sousdev

回答

1

可能是你正在談論這個

<?php 
session_start(); 
$_SESSION['start'] = time(); 


/*here goes the code of email*/ 

$_SESSION['end'] = time(); 
echo "Start:".$_SESSION['start']."--"."End:".$_SESSION['end']."</br>"; 
echo "Total Execution time is : ".date("H:i:s",$_SESSION['end']-$_SESSION['start']); 

?> 
+0

這是好的,但我認爲這裏是條件問題,因爲它進入23秒後總是.. –

0

有你想要的東西沒有辦法,你可以做。 Gmail將郵件中的所有圖像都緩存起來,所以我想在23秒內沒有收到任何東西,只是超時請求本身

+0

其實有時它來閱讀:超過30秒太...而不到23秒太...我不知道爲什麼它發生.. –

+0

嗯,這真的沒關係。您收到的任何信息均來自郵件的gmail自動處理,而不是用戶。 – Borgtex

+0

其實我覺得我在這種情況下發送「HI」所以它每秒都會收到,所以它如何超時? –