Download script er begyndt at fejle
Nogen der kan sige mig hvorfor flg. script misser ca. 15 - 20 kb af filer man downloader såfremt filen er over ca. 8-9 mb i størrelse??Det skal siges at den HAR virket før, men pga. et disknedbrud hos min webhost er sitet blevet flyttet til en anden server og siden det er sket er det begyndt af fejle...
Jeg kan dog ikke lige se noget i PHPInfo (http://www.tog-sim.dk/phpinfo.php) der skulle have nogen indflydelse på det...
Har desværre ikke en PHPInfo fra den gamle server så jeg kan ikke engang sammenligne hvad der er forskelligt...
<?php
if (!defined("LOADED_AS_MODULE")) {
die ("You can't access this file directly...");
}
global $ModName, $pntable, $prefix;
set_time_limit( 0 );
include_once("modules/$ModName/common.php");
$_n = mktime(date("H"),date("i"),date("s"),date("m"),(date("d")-7),date("Y"));
$dir = "/var/www/tog-sim.dk/public_html/modules/$ModName/tmp/";
$dh = opendir($dir);
while (($file = readdir($dh)) !== false) {
if (is_file($dir.$file)) {
$arrFile = explode(".",$file);
if ($arrFile[(COUNT($arrFile)-1)] > $_n) {
unlink($dir.$file);
}
}
}
closedir($dh);
$_n = mktime((date("H")-5),date("i"),date("s"),date("m"),date("d"),date("Y"));
mysql_query("DELETE FROM $prefix"._TSDL_DLBin." WHERE (tstamp > '$_n')");
if (getUserStat() == 0) {
define( 'DL_LIMIT_BANDWIDTH', 5120 ); // In Bytes - 0 = No limit!
} else if (getUserStat() == 2) {
define( 'DL_LIMIT_BANDWIDTH', 1024 ); // In Bytes - 0 = No limit!
} else {
define( 'DL_LIMIT_BANDWIDTH', 0 ); // In Bytes - 0 = No limit!
}
if (!defined('DL_DOWNLOAD_ROOT')) {
define( 'DL_DOWNLOAD_ROOT', '/var/www/tog-sim.dk/public_html/xxxx' ); // Set this to where you store your files!
$sql = mysql_query("SELECT pn_url,pn_type FROM $prefix"._TSDL_downloads." WHERE (pn_did = '$id')") or die(mysql_error());
$row = mysql_fetch_array($sql) or die(mysql_error());
$path = $row[pn_url];
$type = $row[pn_type];
if ( strlen( $path ) == 0 )
{
die('No download');
}
$file = DL_DOWNLOAD_ROOT . "/" . $path;
mysql_query("UPDATE $prefix"._TSDL_downloads." SET pn_hits=pn_hits+1 WHERE (pn_did = '$id')") or die(mysql_error());
$userfile = false;
} else {
$file = DL_DOWNLOAD_ROOT;
$type = "application/zip";
$userfile = true;
}
header( "Pragma: " );
header( "Cache-Control: " );
header( "Expires: 0" );
if ( !file_exists( $file ) )
{
// The file does not exist
die( 'File not found ('.$file.') (ID: '.$id.')' );
exit;
}
$offset = false;
$endset = false;
if ( $_SERVER['HTTP_RANGE'] )
{
// User wants to resume download
if ( preg_match( '/^bytes=([0-9]*?)-$/', $_SERVER['HTTP_RANGE'], $regs ) )
{
$offset = $regs[1];
}
else if ( preg_match( '/^bytes=([0-9]*?)-([0-9]*?)$/', $_SERVER['HTTP_RANGE'], $regs ) )
{
$offset = $regs[1];
$endset = $regs[2];
}
}
$length = filesize( $file );
$fp = fopen( $file, 'rb' );
if ( $offset )
{
if ( $offset > $length )
{
// User requested to resume beyond file size!
header( 'HTTP/1.0 500 Internal Server Error' );
exit;
}
// Resume download from somewhere
fseek( $fp, $offset );
$length -= $offset;
if ( $endset )
{
$length = $endset-$offset;
}
}
$filename = basename( $file );
if (!$debug) {
header( "Content-Length: $length" );
header( "Content-Type: $type" );
header( "X-Powered-By: TSDL Download System" );
header( "Content-disposition: attachment; filename=$filename" );
header( "Content-Transfer-Encoding: binary" );
header( "Accept-Ranges: bytes" );
if ( !$endset )
{
$endset = $length;
}
$cur = 0;
$start = time();
$len = ( ( $length - $cur ) > 1024 ? 1024 : ( $length - $cur ) );
while ( $cnt = fread( $fp, $len ) )
{
$cur += $len;
$len = ( ( $length - $cur ) > 1024 ? 1024 : ( $length - $cur ) );
echo $cnt;
$secs = time() - $start;
$bsec = ( ( $cur / $secs ) / 1 );
if ( DL_LIMIT_BANDWIDTH != 0 && $bsec > DL_LIMIT_BANDWIDTH )
{
sleep( 1 );
}
if ( connection_aborted() )
{
// User cancelled the download...
if ($userfile) {
fclose($fp);
unlink(DL_DOWNLOAD_ROOT);
}
exit;
}
}
fclose( $fp );
?>
