2013-02-03 67 views
3

我試圖在爲查看圖像的每秒添加一行MySQL的時候提供圖像。當頁面發生變化時,PHP connection_aborted()不起作用

我在1024位數據塊爲它服務(總規模爲圖像是20KB)

的問題是,如果我加載在顯示的圖像的頁面,然後關閉該窗口或點擊鏈接這會將我帶到腳本不斷運行的其他頁面,並且不會像應該那樣使用die

ignore_user_abort(false); 
$file = 'a.jpg'; 
header('Content-Type: image/jpeg'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Content-Length: ' . filesize($file)); 
ob_clean(); 
flush(); 

$conn = mysql_connect("localhost","user","pass"); 
mysql_select_db("mydb",$conn); 

$fp=fopen($file,"rb"); 
$i=0; 

while (!feof($fp)) { 

    print(fread($fp,1024)); 
    sleep(1); 
    mysql_query("INSERT INTO table (VIEWTIME) VALUES ('$i')"); 
    $i++; 
    flush(); 
    ob_flush(); 
    if (connection_aborted()) { 
     die(); 
    } 
} 

我試圖找到一個「服務器端」唯一的解決辦法,因爲我有一個使我不能用任何JS或任何客戶端語言的一些技術限制。

+0

你或許應該採取更好的表現出環路的連接(的mysql_connect/mysql_select_db)。至於這個問題,你可以用AJAX做,我不確定沒有某種客戶端檢查是可能的。 – Ynhockey

+0

在服務器可以閃爍之前,A20k文件將被加載。嘗試使用20mb文件! –

+0

嗨@Ynhockey感謝您的評論,我想保留這個服務器端,只是由於一些技術限制。 – user838437

回答

1

也許

ignore_user_abort(false); 

應該

ignore_user_abort(true); 

Docs

+0

試過了,沒有改變任何東西.. – user838437

相關問題