Nem törli a rendszer a lejárt file-okat.

Nem törli a rendszer a lejárt file-okat.
2018-12-15T17:21:16+01:00
2018-12-30T09:30:43+01:00
2022-10-15T21:30:51+02:00
Hutolada
Sziasztok.
Van egy php 7.0 -s scriptem. Olyan gondom van,hogy megcsinálom a futtatást,de viszont a régi file-okat nem törli.

Ez lenne a kód bizonyos része.:

    $TIMEa = time();
    file_put_contents(SETTINGS1 . 'logs/generator_' . $CH_GROUP . '.log', "VTMK EPG indulas = " . date('Y-m-d H:i:s', $TIMEa) . "\r\nNapok szama = $DAYS\r\nCsatornak szama = $MAX_CHANNELS\r\n\r\n");
    foreach ($channels as $channel_name => $array) {
        foreach ($array as $site_ID) {
            $SITES = explode('|', $site_ID);
            $CHANNEL = $channel_name;
            $preTag = $SITES[0];
            $ID = $SITES[1];
            $_temp_ = explode('.', $channel_name);
            $xmlLang[$ITERATOR] = mb_strtolower(end($_temp_));
            $_temp_ = null;
            if (strpos($preTag, '~') !== false) {
                $code = explode('~', $preTag);
                $WEBSITEID = strReplace($code[0], array('/' => '.')) . '.' . $code[1];
                $WEBSITE = $code[1];
                $WEBID = $code[0];
            } else {
                $WEBSITEID = $preTag;
                $WEBSITE = $preTag;
            }
            $XMLarrays["channelName"][$ITERATOR] = trim(preg_replace('~[^A-Za-z0-9&]~', ' ', $CHANNEL));
            $XMLarrays["channelID"][$ITERATOR] = preg_replace('~[^a-z0-9\.]~', '.', mb_strtolower(preg_replace('~(&)~', '-', $CHANNEL)));
            $XMLarrays["channelPic"][$ITERATOR] = SETTINGS3 . preg_replace('~[^a-z0-9\.]~', '.', mb_strtolower(preg_replace('~(&)~', '-', $CHANNEL))) . '.png';
            include(SETTINGS1 . 'sources/' . $WEBSITE . '.php');
            if ($ITERATOR + 1 === $MAX_CHANNELS) {
                include(SETTINGS1 . 'buildXML/buildXML.php');
                $XMLarrays = null;
                include(SETTINGS1 . 'cache/clean.php');
                $TIMEb = date('Y-m-d H:i:s', time());
                $TIMEc = gmdate("H:i:s", time() - $TIMEa);
                file_put_contents(SETTINGS1 . 'logs/generator_' . $CH_GROUP . '.log', "\r\nEpg vegzett = $TIMEb\r\nGyartasi ido = $TIMEc", FILE_APPEND | LOCK_EX);
            }
            if ($stop === false) {
                break(1);
            }
        }
        $ITERATOR++;
    }

    restore_error_handler($old_error_handler);
}


A cache mappában levő mappák file száma sose csökken csak nől,de elég drasztikusan.
Illetve ez által a végső file készítése a szokásos 12mb-os file helyett első nap 12mb  második nap 18mb harmadik nap 22mb-os
Mutasd a teljes hozzászólást!
A "file gyártás idő" helyett inkább "utolsó hozzáférési (módosítás vagy nem + mentés) idő (időbélyeg-gel számolva)", ha igaz...
Mutasd a teljes hozzászólást!

  • Hali!

    Használd a forráskód-gombot (a szerkesztő-mező felett, balról a harmadik: </>), ha forráskódot illesztesz be.

    Mutasd a teljes hozzászólást!
  • Bocsi nem tudom szerkeszteni.

    $TIMEa = time(); file_put_contents(SETTINGS1 . 'logs/generator_' . $CH_GROUP . '.log', "VTMK EPG indulas = " . date('Y-m-d H:i:s', $TIMEa) . "\r\nNapok szama = $DAYS\r\nCsatornak szama = $MAX_CHANNELS\r\n\r\n"); foreach ($channels as $channel_name => $array) { foreach ($array as $site_ID) { $SITES = explode('|', $site_ID); $CHANNEL = $channel_name; $preTag = $SITES[0]; $ID = $SITES[1]; $_temp_ = explode('.', $channel_name); $xmlLang[$ITERATOR] = mb_strtolower(end($_temp_)); $_temp_ = null; if (strpos($preTag, '~') !== false) { $code = explode('~', $preTag); $WEBSITEID = strReplace($code[0], array('/' => '.')) . '.' . $code[1]; $WEBSITE = $code[1]; $WEBID = $code[0]; } else { $WEBSITEID = $preTag; $WEBSITE = $preTag; } $XMLarrays["channelName"][$ITERATOR] = trim(preg_replace('~[^A-Za-z0-9&amp;]~', ' ', $CHANNEL)); $XMLarrays["channelID"][$ITERATOR] = preg_replace('~[^a-z0-9\.]~', '.', mb_strtolower(preg_replace('~(&amp;)~', '-', $CHANNEL))); $XMLarrays["channelPic"][$ITERATOR] = SETTINGS3 . preg_replace('~[^a-z0-9\.]~', '.', mb_strtolower(preg_replace('~(&amp;)~', '-', $CHANNEL))) . '.png'; include(SETTINGS1 . 'sources/' . $WEBSITE . '.php'); if ($ITERATOR + 1 === $MAX_CHANNELS) { include(SETTINGS1 . 'buildXML/buildXML.php'); $XMLarrays = null; include(SETTINGS1 . 'cache/clean.php'); $TIMEb = date('Y-m-d H:i:s', time()); $TIMEc = gmdate("H:i:s", time() - $TIMEa); file_put_contents(SETTINGS1 . 'logs/generator_' . $CH_GROUP . '.log', "\r\nEpg vegzett = $TIMEb\r\nGyartasi ido = $TIMEc", FILE_APPEND | LOCK_EX); } if ($stop === false) { break(1); } } $ITERATOR++; } restore_error_handler($old_error_handler); }
    Mutasd a teljes hozzászólást!
  • Tippre a cache/clean.php -ban kene lennie a torlesnek, viszont minden szempontbol szornyu ez a kod, en kidobnam.
    Mutasd a teljes hozzászólást!
  • if( $CH_GROUP == 'HU' ) { array_map('unlink', glob(SETTINGS2.'cache/*.json')); foreach(glob(SETTINGS2.'cache/24.hu/*') as $File) { if( date("Ymd", filemtime($File)) < date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS17 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/sms.cz/*') as $File) { if( date("Ymd", filemtime($File)) <= date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS22 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/port.hu/*') as $File) { if( date("Ymd", filemtime($File)) < date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS18 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/tvmustra.hu/*') as $File) { if( date("Ymd", filemtime($File)) <= date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS19 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/horizon.tv/*') as $File) { if( date("Ymd", filemtime($File)) < date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS16 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/onet.pl/*') as $File) { if( date("Ymd", filemtime($File)) <= date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS26 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/animare.hu/*') as $File) { if( date("Ymd", filemtime($File)) <= date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS28 == 1 ) { unlink($File); } } } ;
    Mutasd a teljes hozzászólást!
  • Hat latod,  ott vannak az unlink-ek, szal mar csak azt kell kitalalnod, hogy eleve lefut-e ez a .php, es ha igen, akkor a glob-oknak atadott  SETTINGS2 jo helyre mutat-e.
    Mutasd a teljes hozzászólást!
  • Szia! 
    Az unlink()-ekhez rakj debuggoláshoz kiíratást, hogy mit törölsz és mi a visszatérési értéke a függvények.
    Nézd meg a mappa és a fájlok attribútumát, hogy egyáltalán jól vannak e a jogok beállítva.
    Mutasd a teljes hozzászólást!
  • Lehet, hogy tudnád használni a következő rekurzívan törlő megoldást ->

    <?php // könyvtár tartalom törlése a $ido-nél régebbi fájlok esetében & ha $oc=1 a könyvtárat is!! function rmdirr($dirname, $oc=0, $ido) { if( !file_exists($dirname) ) { return false; } if( (is_file($dirname)) && ((time()-filemtime($dirname)) > $ido) ) { return unlink($dirname); } if( is_dir($dirname) ) { $dir = dir($dirname); while(false !== $entry = $dir->read()) { if( $entry == '.' || $entry == '..' ) { continue; } rmdirr("$dirname/$entry",$oc,$ido); } $dir->close(); } if( $oc === 1 ) { return rmdir($dirname); } } // A 60 percnél régebben létrehozott fájlok törlése rmdirr('dir_name', 0, 3600); ?>
    Ha nem erre gondoltál
    Mutasd a teljes hozzászólást!
  • Szia igen az jó mert van eg admin panelom és ha pl a settings2 rosszul lenne megadva akkor jelezné és nem működne egyáltalán.
    Mutasd a teljes hozzászólást!
  • Szia Feri bácsi,de igen ilyesfélére gondoltam. Csak most dilemmába vagyok.
    Mert pl letöltök 3 napot ma. Akkor holnap lefuttatom akkor ugye a mai napot törli két napot megtart és egy napot tölt hozzá.
    Ezért vagyok most kicsit elakadva. Arra gondoltam,hogy az idővel van baja és nem tudja kiszámolni mikor van törlés mikor nincs és egyáltalán nem töröl semmit.
    Mutasd a teljes hozzászólást!
  • Mert pl letöltök 3 napot ma. Akkor holnap lefuttatom (mit is?) akkor ugye a mai napot törli két napot megtart és egy napot tölt hozzá.

    Bár nem teljesen világos a dilemma, de esetleg a törlést futtathatod feltételtől függően és/vagy elmented az utolsó mentés/törlés időpontját (adatait) és attól teszed függővé a következő törlést és/vagy akármilyen egyébb feltétel szerint mentesz és törölsz - XY napnál - régebbi fájlokat...
    Azaz, pontosítani kellene mit, milyen feltétellel és milyen időközönként (folyamat ábra) szeretnél csinálni...
    Mutasd a teljes hozzászólást!
  • Teljes mértékben igazad van. Ez nagyon jó.

    Múmia is valami ilyesmit mondott:

    a file gyártás idő - xnap =jövő idő
    negatív idő az eredmény amiatt nem törli

    majd ki dumpolunk egy fájlt mennyi az értéke és a a time() - (file idő +2nap) matekból megoldjuk

    ha kevesebb akkor unlink

    if( time() - (mktime($file) - 86400*2)<0)unlink($file);
    Mutasd a teljes hozzászólást!
  • A "file gyártás idő" helyett inkább "utolsó hozzáférési (módosítás vagy nem + mentés) idő (időbélyeg-gel számolva)", ha igaz...
    Mutasd a teljes hozzászólást!
  • Bocsánat csak egy magamat ellenőrző kérdés.
    Nem lehet azért nem működik a törlés funkcióm,mert php7.ini-ben valami nincs beállítva?
    Most ideiglenesen cronnal oldottam meg a mappák tartalmának törlését. De ugye az csontra kiüríti a mappákat....
    Mutasd a teljes hozzászólást!
  • Szerintem nézd meg a szervereden a feltöltött könyvtárak és fájlok attr értékeit (pl. 750) és ne az ini-ben keresd a hibát...
    Ha valamelyiket módosítani kell / szeretnéd, akkor meg chmod...
    Megj: Esetleg a feltöltés előtt sem árt megnézni a jogosultságokat, mert a WIN is képes "csodákra"...
    Mutasd a teljes hozzászólást!
  • Na kipróbáltam ezzel a megoldással cronban:


    5 9 * * * rm -rf /var/www/virtual/hu/gorbe/htdocs/cache/port/*


    Ez működik tehát akkor az ubuntu vps beállítások jók imscp alatt.

    Akkor viszont a kóddal lesz a gond.. igaz most midnen file-t töröl az összes mappából mert több cron parancsot adtam ki.
    DE most legalább megcsinálja és jól..

    Ezzel a kóddal majd délután nekiugrok azt átcsoportosítom mert ez így nem járja,hogy lassan amit az elődöm csinált szinte semmi sem működött újra kellett szinte írni az egészet..

    Köszi Feri bácsi kitartok és köszönöm a tanácsokat most végig fogom járni.
    Mutasd a teljes hozzászólást!
  • Nincs mit...
    Azért ha összeállt a "dolog" jó volna közölnöd a végső megoldást, hogy később mások is tanulhassanak belőle...
    Megj: Akkor majd ne felejtsd használni a "Forráskód" gombot (3.) és elküldés előtt az utolsót is -> "Markup szerkesztése"...

    Mutasd a teljes hozzászólást!
  • Sziasztok. Ne haragudjatok nem felejtettem el csak nem voltam a héten nagyon gép közelben... Kocsimat vittem barátom cégéhez kasznizni meg a kisfiammal is dolog illetve a karácsonyra készültünk meg még egy - két itthoni maszek munkát megcsináltam.


    Ma állok neki a törlés résznek.. Lehet találtam valamit ami okozhatta ,hogy meghiúsuljon. a clean.php-ban egy settings érték ami lehet bajos..
    Mutasd a teljes hozzászólást!
  • Ilyenre gondoltam.:

    <? if( $CH_GROUP == 'HU' ) { array_map('unlink', glob(SETTINGS2.'cache/*.json')); foreach(glob(SETTINGS2.'cache/24.hu/*') as $File) { if( date("Ymd", filemtime($File)) < date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS17 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/sms.cz/*') as $File) { if( date("Ymd", filemtime($File)) <= date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS29 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/port.hu/*') as $File) { if( date("Ymd", filemtime($File)) < date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS18 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/tvmustra.hu/*') as $File) { if( date("Ymd", filemtime($File)) <= date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS19 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/horizon.tv/*') as $File) { if( date("Ymd", filemtime($File)) < date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS16 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/onet.pl/*') as $File) { if( date("Ymd", filemtime($File)) <= date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS26 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/animare.hu/*') as $File) { if( date("Ymd", filemtime($File)) <= date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS28 == 1 ) { unlink($File); } } foreach(glob(SETTINGS2.'cache/musortv/*') as $File) { if( date("Ymd", filemtime($File)) <= date("Ymd", strtotime("-".$DAYS." days")) && SETTINGS31 == 1 ) { unlink($File); } } } ; ?>
    Mutasd a teljes hozzászólást!
  • Mai nap feltöltöm illetve holnap és holnapután. Akkor bekapcsolom a törlést mindengyiknél.. ÉS kiderül...
    Mutasd a teljes hozzászólást!
  • ismét
    Mivel ebben az évben (rajtam kívül) már nem igen fog senki programozási problémákkal foglalkozni, ezért kilépek a topicból és kívánom mindenkinek ->
    **********************  BUÉK 2019 ********************
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd