画像が表示された秒ごとに MySQL 行を追加しながら、画像を提供しようとしています。
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またはクライアント側の言語を使用できないという技術的な制限があるため、「サーバー側」のみのソリューションを見つけようとしています。