Mine lehekülje lõppu

Prinditav versioon  
Autor: Pealkiri: php valetab failisuuruste kohta
salu
Noor toru
**



Registreerunud: 15.7.2009
Kasutaja on eemal


[*] postitati 19.11.2010 14:20
php valetab failisuuruste kohta
Jama siis selline, et php-põhine faililisti skript ajab üle 2Gb suuruste failide kohta imelikku plära, nt:

arx1290168195r.jpg - 7kB

Tolle faili tegelik suurus on 3,9Gb. Nt. 4,4Gb faili kohta väidab suuruseks 373Mb, 8Gb aga -67189.1 KB. Alla 2Gb failide puhul probleeme netu. Olen testinud mitut erinevat skripti, kõik ajavad ühesugust jura.

Oskab keegi miskit tarka kosta, kuidas asi lahendada? Tegu on dedi-servuga, seega täielik ruut olemas, juhuks kui tuleb hoopis servu konfi kallale minema (php.ini?).

Tänud ette.
Vaata kasutaja profiili Külasta kasutaja kodulehte Vaata kasutaja MSN Messengeri aadressi
0
DonQ
Administraator
********

Avatar

Administraator

Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal

Tuju: Kerge puhkus

[*] postitati 19.11.2010 14:37
Ja millise funktsiooniga skript faili suurust küsib?
Vaata kasutaja profiili
0
salu
Noor toru
**



Registreerunud: 15.7.2009
Kasutaja on eemal


[*] postitati 19.11.2010 15:21
Erinevad skriptid erinevalt, hetkel pusin sellega:

http://subclub.ee/salu/index.php.txt
Vaata kasutaja profiili Külasta kasutaja kodulehte Vaata kasutaja MSN Messengeri aadressi
0
DonQ
Administraator
********

Avatar

Administraator

Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal

Tuju: Kerge puhkus

[*] postitati 19.11.2010 15:25
Kuskilt maailmast:
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)).


Ja ära püüagi rahvale seletada, et sa ei saa aru, misasi on funktsioon ja misasi on skript :)

[Muudetud: 19.11.2010 DonQ]
Vaata kasutaja profiili
0
salu
Noor toru
**



Registreerunud: 15.7.2009
Kasutaja on eemal


[*] postitati 19.11.2010 15:29
Krt, mu engliis on üsna nigel, äkki ikkagi ütled, mida ma seal skripti lõpus pean ära muutma :)
Vaata kasutaja profiili Külasta kasutaja kodulehte Vaata kasutaja MSN Messengeri aadressi
0
DonQ
Administraator
********

Avatar

Administraator

Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal

Tuju: Kerge puhkus

[*] postitati 19.11.2010 16:20
Tead, ei ütle (ma ise pole php-d progenud ka). Lisaks töötab minu kommenteeritud lahendus vaid kuni 4GB-ni, edasi jälle jama.

PHP lehel on pikem diskussioon ja koodijupid suuremate failide suuruse kohta. Inglise keele mitteoskamine ei vabanda - ka mina pole inglise keelt õppinud, aga elu sunnib sellest aru saama.
http://php.net/manual/en/function.filesize.php

Üldiselt pead tegema enda funktsiooni faili suuruse näitamise kohta ja selle funktsiooni kirjutama skripti praeguse funktsiooni asemele. Kuna sinu poolt näidatud skriptis on see funktsioon juba olemas (function letter_size($byte_size)), siis pead vaid selle sisu niimoodi ümber tegema, et ta ka suuremaid faile oskab õigesti näidata.

Võib-olla leiad kuskilt selle koodijupi uuema versiooni - ei usu, et keegi seda aja jooksul kohendanud pole.
Vaata kasutaja profiili
0
salu
Noor toru
**



Registreerunud: 15.7.2009
Kasutaja on eemal


[*] postitati 19.11.2010 16:54
Mnjah, näib, et viga on ikka kuskil mujal. Proovisin mitut skripti teises serveris ja polnud probleeme, failide suurused olid kenasti paigas.
Vot nüüd olen küll plindris :(
Vaata kasutaja profiili Külasta kasutaja kodulehte Vaata kasutaja MSN Messengeri aadressi
0
DonQ
Administraator
********

Avatar

Administraator

Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal

Tuju: Kerge puhkus

[*] postitati 19.11.2010 18:33
No kui sa viitsiksid inglise keele läbi närida, siis viimati viidatud teemas oli juttu sellest, et erinevatel serveritel (windows IIS, windows apache, linuxi erinevad kernelid, 32 bitti, 64 bitti, erinevad failisüsteemid) ja erinevate php versioonidega tuleb kasutada erinevat töötlust, et õige number kätte saada. Mõnel puhul tehti isegi nii, et lasti failisüsteemi dir (või ls) käsk käima ja tulemusest lõigati see jupp teksti välja, kus faili pikkus kirjas - kuna 32bitise numbri teoreetiliselt kõige suurem väärtus üle 4GB ei lähe, siis php tasemel on raske selliste numbritega midagi mõistlikku teha.

Mõni teadja võiks ju ka sõna võtta (ja sina võiksid serveri konfist natuke pajatada :))
Vaata kasutaja profiili
0
salu
Noor toru
**



Registreerunud: 15.7.2009
Kasutaja on eemal


[*] postitati 19.11.2010 18:49
Server on Apache/2.2.16 (Debian) PHP/5.3.2-2 with Suhosin-Patch (Kerneli versioon 2.6.26-2-686 (SMP) i686).

Aga mõningase pusimisega sai asi lõpuks ikkagi jonksu. Ikke jah tuli skripti veidi krõhvitseda.
Vaata kasutaja profiili Külasta kasutaja kodulehte Vaata kasutaja MSN Messengeri aadressi
0
DonQ
Administraator
********

Avatar

Administraator

Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal

Tuju: Kerge puhkus

[*] postitati 19.11.2010 19:25
A viitsid sa siis neid võrdlemiseks näidata? Ma lihtsalt uudishimust, et mis imeasju see php nõuab :)
Vaata kasutaja profiili
0
salu
Noor toru
**



Registreerunud: 15.7.2009
Kasutaja on eemal


[*] postitati 19.11.2010 19:33
Nu see sama skript, mis ma enne andsin, sinna sai lisatud funktsioon:


Kood:
function getSize($file) { $size = exec ('stat -c %s '. escapeshellarg ($file)); return $size; }


Ja real 482 sai tehtud lihtne muudatus:


Kood:
enne: $file_size = filesize($content_path); pärast: $file_size = getSize($content_path);


Tulemus:

klz1290186453f.jpg - 4kB

Vaata kasutaja profiili Külasta kasutaja kodulehte Vaata kasutaja MSN Messengeri aadressi
0

  Mine lehekülje algusse

Ainus õige foorum!
XMB Forum Software © 2001-2009 XMB Meeskond