2013-02-03 106 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

相关问题