Autor | Zpráva | ||
---|---|---|---|
Medhius Profil |
#1 · Zasláno: 2. 8. 2005, 19:05:49
Chci zjistit velikost adresáře pomocí PHP. Již vím, že to jde rekurzí s filesize(). Ale to je velmi pomalé a zatěžuje to server.
Další možnost, kterou jsem nalezl je pomocí popen() spustit funkci DU na serveru, která to umí, ale popen() je zase blokován SAFE modem v PHP (což je logické, protože popen() je docela nebezpečný). Takže jak na to? Ideálně bych viděl použití toho popen(), ale poradíte mi jak to zabezpečit? |
||
llook Profil |
#2 · Zasláno: 2. 8. 2005, 20:04:37
Co funkce disk_total_space? Sice to hází o něco víc, protože to podle poznámek pod popisem nebere z velikosti ale počtu zabraných uzlů (takže obvykle násobky 4096B), ale to by mohlo stačit.
Další věc co mě napadá jsou FTP funkce, třeba ftp_rawlist, ale tam to možná bude stejný jako disk_total_space. Nezkoušel jsem. Pak už mě napadá jenom jedna věc. Pokud by byl vstřícný webhoster (to tady asi jo ;) ), tak napsat v céčku jednoduchý modul který by dělal ten potřebný popen a vrátil výsledek. |
||
Medhius Profil |
#3 · Zasláno: 2. 8. 2005, 20:55:45
disk_total_space mi zjistí velikost celého disku, nikoli jednoho adresáře.
Ad modul v céčku. To je mi bohužel trochu vzdálený, do jaké míry to je realizovatelné řekněme pro php kodéra a kde se o tom dá něco zjistit? |
||
llook Profil |
#4 · Zasláno: 2. 8. 2005, 21:13:17
A jo, teď jsem to vyzkoušel. Tak to je v manuálu nepřesnost (Returns the total size of a directory).
Pro napsání modulu jsou potřeba aspoň trochu znalost C, o samotném Zend API se toho dá dost najít v manuálu: http://www.php.net/manual/en/zend.creating.php Ale zkušenosti s tím také žádné nemám. |
||
Medhius Profil |
#5 · Zasláno: 2. 8. 2005, 21:25:42
Tak už jsem to vyřešil takto: Pomocí DU se to kronem třeba jednou za hodinu zapíše někam do souboru a pak si to pomocí PHP můžu načíst. Je to bezpečné a využije se příkaz DU, což jsem chtěl. Přesto díky za pomoc a za tipy.
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0