Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (bearbeitet)

Moin,

in einem meiner aktuellen Projekte will ich dem Benutzer angeben, wie gross eine Datei bzw. eine Sammlung von Dateien ist.

Hierbei bin ich nun leider an das 2gbyte Limit gestossen.

filesize(); verwendet intern wohl nur Integer und kann damit nicht mehr als 2gbyte zurückgeben.

Zwar wird auf php.net einiges an Tips und "beta Patches" geboten um intern zumindest auf Doubles zu kommen und so mehr addressieren zu können, allerdings ist mit das Wort Beta da etwas .. hmm dubios. Auch die Kompilierung mit Largefile Support scheint sehr stark abhängig vom restlichen System zu sein..

Hat da schonmal wer mit diesem Problem zu tun gehabt und eine Lösung zur Hand? Irgendeine andere Idee wie ich an die korrekte Dateigröße kommen könnte, ausser sie komplett einzulesen und dabei die Zeichen zu zählen? :D

Systemumgebung laut phpinfo();:


System 	Linux pandora 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686


PHP Version 5.2.6-1+lenny3


Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny3 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0 

seufzende Grüße

dgr

Edit:

Ah selbst gefunden, dass man ja zumindest in der bash die korrekten werte findet und dann eben mit system(..) arbeiten muss..

nervig, aber dafür auf jedem system möglich :)


/* Quelle: https://debianforum.de/forum/viewtopic.php?f=8&t=82961 */

function get_file_size($file)
{
if(file_exists($file) )
{
$size = system("stat ".$file." | awk '/Size/ { print $2 } '");
return $size;
}
return false;
}
$size = get_file_size($dir.$file);
[/php]

Bearbeitet von dgr243
Geschrieben

Hallo,

dein Posting ist etwas unverständlich. Du möchtest, wenn ich es richtig verstehe, Dateien > 2GB vom Server zum Download anbieten?

Du musst dafür doch kein PHP verwenden

Phil

Geschrieben

DAS die Files über PhP angesprochen werden müssen, hat diesen http://forum.fachinformatiker.de/skript-webserverprogrammierung/25377-sicheren-download-realisieren-2.html Grund ;)

Letztliches Problem hinsichtlich der 2gbyte Grenze von filesize(); bleibt ja aber auch dann, wenn der eigentliche Download "normal", die Wiedergabe der Dateiinformationen (mtime(),ctime(),filesize()...) aber eben über PhP realisiert wird.

Der Workaround über den system() Call funktioniert aber einwandfrei :)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...