Potřeboval bych sledovat asi u 100 souborů (*.htm) jestli se změnil jejich obsah. Vzhledem k tomu, že aktualizované soubory budu asi ukládat na vlastní web tak to řeším pomocí file_get_contents() a md5(), předpokládám, že je to úspornější řešení než použít md5_file() a pak v případě, že soubor bude změněný jej načíst pomocí file_get_contents().
Chtěl bych se vyhnout zbytečným přenosům dat, ale myslím si, že všechny funkce potřebné k zjištění Etagu, podle kterého si myslím, že by se změněné soubory daly poznat, asi budou zakázané.
Nevíte někdo jestli by to šlo na WZ vyřešit lépe než pomocí kombinace file_get_contents() a md5() ?
Možná je to blbost a někde jsem četl, že to nemusí na stopro fungovat, ale i tak to můžeš zkusit.
Skoro každý filesystem, teda aspoň ty unixové, si ukládaji u souboru časové razítko jeho vzniku, posledního přístupu a taky poslední modifikace souboru. Takže můžeš sledovat kdy jaký soubor byl modifikován nebo kdy k němu byl poslední přístup.
Na to se myslelo i v PHP, takže pro ně existuji funkce filectime, fileatime a filemtime. A pro tebe je právě ta poslední funkce, která ti vypíše datum poslední změny.
Díky, ty funkce znám, ale myslel jsem, že fungují jen v "lokálním filesystému" serveru. Každopádně za zkoušku nic nedám
Jo takto? Já myslel, že mluviš lokálně :)
Tož to teda nevim, zda pujde i externě. Zkusit to můžeš ;)
Myslím si, že jiná možnost asi nebude. Ať už použiješ jakoukoli metodu, stejně se musiš vzdáleně připojit a stahnout od něj data.
U socketu by stačilo odeslat pouze HEAD požadavek, ale nevím jestli ve výsledku vrací i čas poslední změny. Ale zátěžově je to skoro stejné.
Trochu jiná, ale zřejmě nespolehlivá metoda, je zjištění rozdílu velikosti souboru. Nespolehlivá je v tom, že k modifikaci může dojít k výměně jednoho znaku jiným, ale velikost zustává stejná. Takže vlastně k modifikaci nedošlo.
<HTML>Vhledem k tomu, že tady na WZ libovolný packet nevytvoříte, pak je třeba vzdálený soubor celý stáhnout. A pak už si s ním nakládej, jak uznáš za vhodné.</HTML>
Nejde to. Našel jsem řešení, ale používá to fsockopen(), nestudoval jsem to, ale vracelo to to kompletní hlavičku, včetně Etagu. Myslíš, že dotaz na tu hlavičku bude datově náročnější než načíst třeba 30kb soubor? Já vlastně ani, nevím co to řešení s tím fsockopen() vlastně dělá, protože je to zakázané tak jsem pokračoval dál. A filesize() bude taky lokální