Autor Zpráva
Medhius
Profil
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
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
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
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
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.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0