Seite 1 von 1

Dateien größer 2GB

Verfasst: Mo 18.Sep, 2006 09:47
von Dungeonwatcher
Moin! 8)

Als Exot was das verwendete Betriebssystem (OS/2) angeht, habe ich mal wieder einen Sonderfall zu "bemängeln". :roll:

Und zwar betrifft es die Anzeige der Dateigröße bei Dateien größer als 2 GB.

--> http://dungeon-bbs.homeip.net/forum/dow ... tail&id=35

Mein australischer Lieblingsprogrammierer (von ihm kommt die PHP/2 Version 5.1.5) schrieb mir dazu folgendes:
From the PHP website:
int filesize ( string filename )

Returns the size of the file in bytes, or FALSE (and generates an error of level E_WARNING) in case of an error.

Note: Because PHP's integer type is signed and many platforms use 32bit integers, filesize() may return unexpected results for files which are larger than 2GB. For files between 2GB and 4GB in size this can usually be overcome by using sprintf("%u", filesize($file)).
Wenn ich das richtig verstehe, dann kann dies durchaus korrigiert werden. Allerdings ist hierbei mal wieder der große Meister @oxpus gefragt. :wink:

Verfasst: Mo 18.Sep, 2006 11:30
von oxpus
Dateien grösser 2 GB?????????????
Was zum Henker sind denn das für Files?????

Verfasst: Mo 18.Sep, 2006 11:39
von Dungeonwatcher
oxpus hat geschrieben:Dateien grösser 2 GB?????????????
Jupp.
Was zum Henker sind denn das für Files?????
z.B. das aktuelle "..."... :wink:

Verfasst: Mo 18.Sep, 2006 12:32
von oxpus
Öhm, nein, für sowas werde ich keine Änderungen machen.
Ich bitte da um Verständnis.
Die Funktionen in der class_dlmod.php sind beschrieben und können daher von jedem selber leicht geändert werden.
Aber ich werde für solche Dateien keine Anpassungen vornehmen.
Sorry...

Verfasst: Mo 18.Sep, 2006 12:50
von Dungeonwatcher
oxpus hat geschrieben:Öhm, nein, für sowas werde ich keine Änderungen machen.
:cry:
Ich bitte da um Verständnis.
Nööö... :wink:
Die Funktionen in der class_dlmod.php sind beschrieben und können daher von jedem selber leicht geändert werden.
Das sagst du. Für mich sind das böhmische Wälder mit 'nem Bahnhof darin... :roll:
Aber ich werde für solche Dateien keine Anpassungen vornehmen.
Sorry...
Null Problemo... 8)

Falls du aber doch mal mit dem Gedanken spielen solltest... :wink:

Verfasst: Mo 18.Sep, 2006 14:04
von oxpus
... sofern die Dateigrössen allgemein dieses Niveau erreichen sollten, aber dann dürfte ich schon in Rente sein :D

Verfasst: Mi 27.Dez, 2006 15:19
von Dungeonwatcher
Hi! 8)

Gaaanz vorsichtig nochmal nachfrag... Du bist ja gerade mächtig am programmieren, evtl. fällt ja doch 'n Menütchen ab um dies zu "fixen"... :roll: :wink:

Denn dies betrifft nicht nur die Anzeige der Dateien sondern auch die Statistik:

Bild

Bye/2

Verfasst: Mi 27.Dez, 2006 15:35
von oxpus
Führe mal folgenden SQL-Befehl aus:

Code: Alles auswählen

select overall_klicks * file_size FROM phpbb_downloads where id = X;
wobei X die ID des verunstalteten Downloads ist.
Wenn dort schon minus rauskommt, kann es auch ein Problem mit der Datenbank selber geben.
Dazu auch mal prüfen, wieviele Gesamtklicks dieser Download bereits hat.

Und nochmal:
Ich werde für solch extrem großen und bislang noch sehr selten verwendeten Dateien nicht anfangen, den MOD in Grundstrukturen zu verändern...

Verfasst: Mi 27.Dez, 2006 15:56
von Dungeonwatcher
oxpus hat geschrieben:Führe mal folgenden SQL-Befehl aus:
Jupp, mit der o.g. Beispieldatei getan. Das Ergebnis: -8082342975
Das ist die Hälfte des vom DL Mod angezeigten Wertes: 1616468595 b
Wobei hier noch die letzte Null fehlt, denn es müsste dort 16164685950 b stehen. Ganz korrekt wäre jedoch: 2.615.677K
Wenn dort schon minus rauskommt, kann es auch ein Problem mit der Datenbank selber geben.
Ähm, du meinst das das hier eingesetzte MySQL 5.0.27 sich da verhaut?
Dazu auch mal prüfen, wieviele Gesamtklicks dieser Download bereits hat.
Es sind aktuell 5 Klicks.
Und nochmal:
Ich werde für solch extrem großen und bislang noch sehr selten verwendeten Dateien nicht anfangen, den MOD in Grundstrukturen zu verändern...
:cry: Sooo selten sind die nun mittlerweile auch nicht mehr. Gerade sauge ich die aktuelle Version von AA (knapp 2,6GB). :wink:

Verfasst: Mi 27.Dez, 2006 16:27
von oxpus
Du bist der einzigste, den ich kenne, der solch grosse Dateien mit dem MOD verwaltet ;)

Verfasst: Mi 27.Dez, 2006 16:39
von Dungeonwatcher
Da drängt sich meine Kiste doch direkt zum Testen auf. :wink:

Egal, eie interpretierst du denn das Ergebnis der SQL Abfrage?

Verfasst: Mi 27.Dez, 2006 17:52
von oxpus
Ich teste noch...

Wie groß ist das Feld file_size in Deiner downloads-Tabelle?
Müsste bigint(20) sein, nach dem letzten MOD-Release ;)
Die Datenbank kann nämlich sehr wohl mit diesen grossen Zahlen umgehen, wenn die Basisdaten auch stimmen :D

Verfasst: Mi 27.Dez, 2006 18:09
von Dungeonwatcher
oxpus hat geschrieben:Wie groß ist das Feld file_size in Deiner downloads-Tabelle?
Müsste bigint(20) sein, nach dem letzten MOD-Release
Korrekt, genau so ist es.
Die Datenbank kann nämlich sehr wohl mit diesen grossen Zahlen umgehen, wenn die Basisdaten auch stimmen
Alles andere hätte mich auch sehr gewundert.

Verfasst: Mi 27.Dez, 2006 19:00
von oxpus
Also das Feld hat die Grösse?
Dann musst Du nochmal die Dateigrössen prüfen lassen, damit die "fehlende" 0 mit eingetragen und die Zahl damit 11stellig wird...

Verfasst: Mi 27.Dez, 2006 19:49
von Dungeonwatcher
oxpus hat geschrieben:Also das Feld hat die Grösse?
Korrekt.
Dann musst Du nochmal die Dateigrössen prüfen lassen, damit die "fehlende" 0 mit eingetragen und die Zahl damit 11stellig wird...
Hmmm, stelle ich mich mal wieder zu dämlich an, denn das funktioniert leider nicht?
Wenn ich DL Verwaltung gehe und diesen DL bearbeite und anschliessend speicher, ändert sich die Angabe der Dateigröße nicht. Es fehlt weiterhin die 0. Abgesehen davon steht in der DL Verwaltung eine andere Dateigröße (-1,578,626.01) als im öffentl. DL Bereich (-1616513036 B).

Verfasst: Mi 27.Dez, 2006 20:31
von oxpus
Öhm, wenn das Feld BIGINT(20) wäre, könnten dann Zahlen bis zu 9223372036854775807 gespeichert werden. Also deutlich mehr, als Deine Datei groß ist.
Welches PHP hast Du im Einsatz?
Vielleicht gibts hier Grenzen...

Verfasst: Mi 27.Dez, 2006 21:17
von Dungeonwatcher
oxpus hat geschrieben:Öhm, wenn das Feld BIGINT(20) wäre
Jupp, definitiv.
Welches PHP hast Du im Einsatz?
Vielleicht gibts hier Grenzen...
v5.2.0

Wenn ich per PHPMyAdmin eine Null hinzufüge, dann wird sie auch entsprechend angenommen und auch im DL Bereich angezeigt.

Verfasst: Mi 27.Dez, 2006 21:22
von oxpus
Komisch, daß meine Tests positiv verlaufen...

Verfasst: Do 28.Dez, 2006 19:49
von Dungeonwatcher
Tja, mein System war schon immer etwas anders... :roll:

Woran könnte es denn dieses Phenomen liegen:
Abgesehen davon steht in der DL Verwaltung eine andere Dateigröße (-1,578,626.01) als im öffentl. DL Bereich (-1616513036 B).

Verfasst: Do 28.Dez, 2006 19:51
von oxpus
Einmal als Kilobyte und einmal als "formatierte" Zahl. Ist so gewollt...

Verfasst: Do 28.Dez, 2006 20:17
von Dungeonwatcher
Ahja.

Na dann guten Rutsch! Für dieses Jahr habe ich nicht mehr vor hier zu "nerven". :wink:

Download-Größe falsch angezeigt...

Verfasst: Mi 07.Feb, 2007 10:32
von metalmatze
Der Fehler ist relativ einfach zu beheben.
Naja... wir haben 3 Stunden gebraucht, um die Lösung zu finden, aber sie ist supereinfach:

Die PHP-Funktion filesize() hat eine Begrenzung auf 2 GB. Alles darüber wird direkt nicht richtig angezeigt. Dies kann man aber sozusagen doch erreichen:

einfach die betreffenden " @filesize([xy]) " in " sprintf("%u",@filesize([xy])) " ändern, und es funktioniert.

Ich nutze auch so grosse Dateien, da ich das Download-Mod im Netzwerk eines Internates zum Verbreiten von Fedora und anderen Linux-Versionen nutze. Das sollte nicht über Samba geschehen. Bei mir funktioniert diese Variante einwandfrei, auch bei Dateien über 4 GB.

Vielleicht baut ihr das Mod ja doch um, da es meiner Meinung nach gar nicht mehr so lange dauern dürfte, bis solche Größen öfter verwendet werden. Außerdem ist der Aufwand nicht wirklich groß, es sind ja nur 5-10 Funktionen gewesen, die sich leicht ergänzen ließen.


Hoffe ich konnte weiterhelfen.

Re: Download-Größe falsch angezeigt...

Verfasst: Mi 07.Feb, 2007 11:51
von Dungeonwatcher
Moin! 8)


Du bist mein Held. :)

Das habe selbst ich hinbekommen mit dem Ändern der Funktionen. Dankeschön für diesen Tip.

@oxpus das sollte in der evtl. nächsten Version unbedingt mit umgesetzt werden. :roll: :wink:

Bye/2

Verfasst: Mi 07.Feb, 2007 17:18
von oxpus
Ist notiert...

Verfasst: Do 08.Feb, 2007 03:11
von Dungeonwatcher
Moin! 8)

DANKE :wink:

Bye/2