| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 9.937
![]() | Vielleicht hilft dir dieser Lösungsansatz: http://www.phpfriend.de/forum/ftopic49257.html |
| | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | vieleicht erstmal readfile im manual anschauen, in php5 ist es unter umständen buggy, 2tens verbraucht es viel speicher, ne while-schleife mit den file-funktionen ist da wohl besser und dann kannst du bei jedem schleifendurchlauf auch die tabelle aktualisieren, wenn seit mehr als 30 sekunden ein eintrag nicht mehr geupdatet wurde -> gilt er als tot
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | ich hab doch gesagt nicht readfile, sondern die file-funktionen fopen fgets fclose ... und das fgets / freads in der schleife benutzen jenachdem wie viel du pro schleifendurchlauf ausliest, kannst du hier sogar noch die geschwindigkeit regulieren mit der maximal runtergeladen wird. da findest du beispielcode: -> http://www.phpfriend.de/forum/ftopic37147-0.html mfg robo47
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
| | |
| Benutzer | Hallo und danke nochmal...ich hab es soweit hinbekommen: Code: <?
/*
CREATE TABLE `downloadmirror` (
`nlfddownloadmirror` INT NOT NULL AUTO_INCREMENT ,
`nlfddownload` INT NOT NULL ,
`dtdownload` TIMESTAMP NOT NULL ,
`sIp` VARCHAR( 15 ) NOT NULL ;
`nbeendet` INT DEFAULT '0' NOT NULL ,
`dtdownloadstart` TIMESTAMP NOT NULL ;
PRIMARY KEY ( `nlfddownloadmirror` )
);
*/
function download($str_file, $num_throttle, $num_update_time)
{
global $con;
//Insert in die Datenbank für User
$query = "INSERT INTO downloadmirror (dtdownload, sIp, dtdownloadstart) VALUES (".time().", '".$_SERVER['REMOTE_ADDR']."', ".time().") ";
$res = mysql_query($query, $con) OR DIE (mysql_error());
$num_nlfddownloadmirror = mysql_insert_id();
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$file\"");
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Expires: 0');
header('Content-Length: '.(string)(filesize($str_file)));
$fp=fopen($str_file,'rb');
var_dump($str_file);
$num_max_update_Time = time() + $num_update_time;
sleep(1);
while(!feof($fp))
{
$num_line++;
$str_buffer = fread($fp, 1024*$num_throttle);
print $str_buffer;
// User abgleichen
echo time().":".$num_max_update_Time."
";
if(time()>=$num_max_update_Time)
{
$num_max_update_Time = time() + $num_update_time;
//Datenbankupdate...muss noch eingebaut werden
$query = "Update downloadmirror set dtdownload = ".time()." where nlfddownloadmirror = ".$num_nlfddownloadmirror." ";
$res = mysql_query($query, $con) OR DIE (mysql_error());
}
}
fclose($fp);
//Download zu ende und Hacken setzen
$query = "Update downloadmirror set nbeendet = 1 where nlfddownloadmirror = ".$num_nlfddownloadmirror." ";
$res = mysql_query($query, $con) OR DIE (mysql_error());
}
// Master Variabelen
$num_max_user = 5; // <- maximale Anzahl der User für einen Download
set_time_limit(0); // <- TimeLimit auf unendlich setzen (Das dauert mit so einem Download ;-))
$num_throttle = 2; // <- kb/s
$str_free = false; // <- Allgemein erst mal blockieren
$str_user_off = true; // <- User nicht vorhanden
$num_nlfddownload = 1; // <- Debugwert (!!!!!!!!!!!!!Muss noch raus hier!!!!!!!!!!!!!)
$num_update_time = 1; // <- Max idle für User, ab dann gilt er als tot , in Sek.
$num_max_waittime = 30; // <- Zeit bis Download wieder freigegen wird
// Datenbankconnect
$host = "localhost";
$user = "weberj";
$pass = "jens";
$database = "test";
$con = @mysql_connect($host, $user, $pass) OR DIE ("
Entschuldigung der Datentenbestand wird zur Zeit aktualisiert</p>");
mysql_select_db($database, $con) OR DIE ("
Entschuldigung der Datentenbestand wird zur Zeit aktualisiert</p>");
//Download raussuchen
$str_sql = "SELECT ";
$str_sql .= " sdownloadnr ";
$str_sql .= "FROM ";
$str_sql .= " download ";
$str_sql .= "WHERE ";
$str_sql .= " nlfddownload = ".$num_nlfddownload." ";
$result = mysql_query($str_sql);
while ($row = mysql_fetch_array($result))
{
//File auswählen
$str_file= $row['sdownloadnr'];
}
mysql_free_result($result);
//Select was raussucht wieviele Leute die datei am ziehen sind
$str_sql = "SELECT ";
$str_sql .= " nlfddownloadmirror ";
$str_sql .= "FROM ";
$str_sql .= " downloadmirror ";
$str_sql .= "WHERE ";
$str_sql .= " nlfddownload = ".$num_nlfddownload." ";
$str_sql .= "AND ";
$str_sql .= " dtdownload >= ".time() + $num_max_waittime." ";
$result = mysql_query($str_sql);
while ($row = mysql_fetch_array($result))
{
$num_vorhanden++;
}
mysql_free_result($result);
//Select was raussucht ob die Ip schon ein Download zieht
$str_sql = "SELECT ";
$str_sql .= " nlfddownloadmirror ";
$str_sql .= "FROM ";
$str_sql .= " downloadmirror ";
$str_sql .= "WHERE ";
$str_sql .= " sIP = '".$_SERVER['REMOTE_ADDR']."' ";
$str_sql .= "AND ";
$str_sql .= " nbeendet = 0 ";
$result = mysql_query($str_sql);
while ($row = mysql_fetch_array($result))
{
$str_user_off = false;
}
mysql_free_result($result);
if($num_vorhanden < $num_max_user && $str_user_off = true)
{
//Wenn noch ein Platz frei Variabele $str_free füllen
$str_free = true;
}
//Wenn User für Downlaod frei ist!!!!
if($str_free == true)
{
//Download aufrufen
download($str_file, $num_throttle, $num_update_time);
}
else
{
echo "Der Dateimirror ist zur Zeit schon voll!!!";
}
?>
|
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Datei auf FTP-Server ändern ohne lokal abzuspeichern | faux | PHP-Fortgeschrittene | 11 | 02.09.2005 11:54 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| readfile blockiert php |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.