Download slots ermöglichen nur wie?

Hab das mal so probiert:

PHP:
while (true) {
//Speed kontrolle
$speed = $maxspeed; //Max-Speed in kbs

$file="".$_GET['file']."";
$dlfile="hf83jdw8ej3dsd/".$_GET['file']."";
$size=filesize($dlfile);
header("Cache-control: private");
header("Content-Type: application/x-otrkey");
header("Content-Length: ".$size);
header("Content-Disposition: filename=".$file);
flush();
$fd = fopen($dlfile, "r");
while(!feof($fd)) {
echo fread($fd, round($speed*1024));
flush();
sleep(1);
}

if (connection_status()!=0){
                 //Aktuelle slot wird gelöscht sobald user das script beendet
                 $update12 = "DELETE FROM slot WHERE session = '$session2';";
                 $slott22 = mysql_query($update12, $DatabasePointer);
                 die(); //kills the script
         }
}

Scheint aber nicht zu klappen...bin ich da zu dumm oder versteck sich da ein fehler?

grüße strex
 
Es muss in die while-Schleife rein.

PHP:
//Speed kontrolle
$speed = $maxspeed; //Max-Speed in kbs

$file="".$_GET['file']."";
$dlfile="hf83jdw8ej3dsd/".$_GET['file']."";
$size=filesize($dlfile);
header("Cache-control: private");
header("Content-Type: application/x-otrkey");
header("Content-Length: ".$size);
header("Content-Disposition: filename=".$file);
flush();
$fd = fopen($dlfile, "r");
while(!feof($fd)) {
echo fread($fd, round($speed*1024));
flush();
sleep(1);

if (connection_status()!=0){
                 //Aktuelle slot wird gelöscht sobald user das script beendet
                 $update12 = "DELETE FROM slot WHERE session = '$session2';";
                 $slott22 = mysql_query($update12, $DatabasePointer);
                 die(); //kills the script
} 


}
 
Also so, wenn ich dich richrig verstanden habe. Geht aber trozdem nicht oder wie lang braucht das script bis es erkennt das der user beendet hat?
PHP:
$speed = $maxspeed; //Max-Speed in kbs

$file="".$_GET['file']."";
$dlfile="hf83jdw8ej3dsd/".$_GET['file']."";
$size=filesize($dlfile);
header("Cache-control: private");
header("Content-Type: application/x-otrkey");
header("Content-Length: ".$size);
header("Content-Disposition: filename=".$file);
flush();
$fd = fopen($dlfile, "r");
while(!feof($fd)) {
echo fread($fd, round($speed*1024));
flush();
sleep(1);
if (connection_status()!=0){
                 //Aktuelle slot wird gelöscht sobald user das script beendet
                 $update12 = "DELETE FROM slot WHERE session = '$session2';";
                 $slott22 = mysql_query($update12, $DatabasePointer);
                 die(); //kills the script
         } 
}
 
Probier mal Folgendes:
PHP:
ignore_user_abort(true);
while( !feof($fd) ) {
	if( connection_status() !== 0 ) {
		break;
	}
	echo fread($fd, round($speed*1024));
	flush();
	sleep(1);
}
//Aktuelle slot wird gelöscht sobald user das script beendet 
$update12 = "DELETE FROM slot WHERE session = '$session2';"; 
$slott22 = mysql_query($update12, $DatabasePointer);
Danke übrigens für die entscheidende Idee, nhoj.
 
Supi, danke es klappt! Ihr seit die besten :)

Jetzt fehlt nur noch mein preg_match :)

Besten Dank!

grüße strex
 
Der preg_match sollte so sein das der codec der einzelenen file ausgelesen wird. Dazu habe ich ja für Datum und Zeit etc. angepasst. Nur der string für den codec möchte nicht so gelingen.

PHP:
@preg_match("/[0-9a-zA-Z_-]{2,}_([0-9]{2}\.[0-9]{2}\.[0-9]{2})_[0-9]{2}\-[0-9]{2}_[0-9a-zA-Z]{2,}_[0-9]{1,}_TVOON_DE./", $files, $Uhrzeit);

Dieser Zeigt mir die Uhrzeit an. Der sollte so angepasst werden das der Codec dann so in der Datenbank geschpeichert werden soll.

Bones_Die_Knochenjaegerin_06.12.28_22-15_rtl_55_TVOON_DE.mpg.avi.otrkey = avi
Stephen_King_Salem_s_Lot_06.12.29_00-00_zdf_60_TVOON_DE.wmv.otrkey = wmv
The_Punisher_07.03.11_23-00_pro7_135_TVOON_DE.mpg.HQ.avi.otrkey = HQ

Also bei .mpg.avi. = avi bei .wmv. = wmv und bei .mpg.HQ.avi. = HQ

Der mehr benötige ich nicht. Danke für hilfe!

grüße strex
 
PHP:
preg_match('/^[0-9a-zA-Z_-]{2,}_([0-9]{2}\.[0-9]{2}\.[0-9]{2})_[0-9]{2}\-[0-9]{2}_[0-9a-zA-Z]{2,}_[0-9]{1,}_TVOON_DE.*\.([^\.]+)\.([^\.]+)\.[^\.]+$/',$files,$match);
if ($match[2] == 'HQ' && $match[3] == 'avi') $codec = 'HQ';
else $codec = $match[3];

Ist nicht getestet, könnte also ein Parse-Fehler drin sein, das Prinzip sollte jedoch klar werden.
 
Probier mal folgenden regulären Ausdruck:
Code:
[0-9a-zA-Z-_]{2,}_([0-9]{2}\.[0-9]{2}\.[0-9]{2})_[0-9]{2}-[0-9]{2}_[0-9a-zA-Z]{2,}_[0-9]{1,}_TVOON_DE(?:\.(HQ\.[a-z]+|[a-z]+))+\.otrkey
 
Zurück