Autor Zpráva
Keeehi
Profil
Ahoj,
chtěl bych pomoct najít nejlepší způsob řešení mého problému.
Potřebuji co nejjednodušeji zjišťovat, zda se soubory v určité složce od posledního spuštění scriptu nezměnily. Zda nějaký nepřibyl, nebo naopak nějaký nezmizel. Vím totiž, že pokud by se něco v souboru změnilo, změní se i jeho název. Takto funguje dneska. Takže by mělo stačit kontrolovat jen jména souborů. Jenže to by se mohlo v budoucnosti změnit, takže bude potřeba kromě přítomnosti všech souborů kontrolovat i to, že se nezměnil jejich obsah (i když momentálně to bude zbytečnost).

$soubory = scandir("slozka/se/soubory");
array_shift($soubory);
array_shift($soubory);
$zmeneny_adresar = false;
foreach($soubory as $soubor){
    $result = mysql_query("SELECT 1 FROM tabulka WHERE slozka='slozka/se/soubory' AND soubor='$soubor' AND obsah='".md5file($soubor)."'");
    if(mysql_num_rows($result) == 0){
        $zmeneny_adresar = true;
        break;
    }
}

$result = mysql_query("SELECT soubor FROM tabulka WHERE slozka='slozka/se/soubory'");
while($zaznam = $mysql_fetch_row($result)){
    if(!in_array($zaznam[0],$soubory)){
        $zmeneny_adresar = true;
        break;    
    }
}

if($zmeneny_adresar)
    // nějaký potřebný kód

A teď k tomu, proč to vlastně potřebuji. Jde o galerii obrázků. Aby při každém zobrazení té galerie nemusel server znovu a znovu generovat html kód, tak jsem to chtěl udělat tak, že by se html vygeneroval jen jednou a pak už by se jen tento soubor staticky zobrazoval. Problém však je, že budu muset zjišťovat, zda se obsah adresáře nezměnil. A když na to tak koukám, tak mi to přijde složitější (časově/procesorově náročnější) než prostě vygenerování html omáčky kolem pole s názvy souborů.

Takže bych vás chtěl poprosit o názor, případně o radu, jak to udělat jednodušeji.
Ještě by tu byla možnost, že po změně by se přegenerování spustilo ručně. Tuto variantu však rozhodně nechci.
Davex
Profil
Nestačilo by hlídat čas poslední změny adresáře a čas poslední změny souborů?
Keeehi
Profil
Davex:
To by bylo úplně perfektní. Něco takového jsem hledal, tušil jsem, že už jsem to někde viděl, ale neměl jsem ponětí jak to najít. Díky za tip.

Tak jsem to vyzkoušel a pro moje potřeby to stačí. Na win XP a Linux CentOS 5.5 to reaguje na vložení/vytvoření souboru, smazání, přejmenování. Když se ale změní obsah souboru, tak to to nezaznamená. V mém případě to však nepotřebuji, takže děkuji za výbornou radu.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0