Kedves Fórumtársak!
Egy olyan helyre kellene írnom php-ban egy minimális php scriptet, ahol a PHP nincs telepítve, csak letöltve a windows-os gépre, kicsomagolva és CLI-ben fut.
Be kell olvasni egy könyvtár tartalmát és az újakat feldolgozni. Viszont két futás között jó lenne tudni mely fájlok jöttek létre. Ezt gondoltam valamilyen DB-be tenni, de az alap php7-ben csak mysqlnd van gyárilag. Mivel limitált a környezet, a fő rendszergazda nem ad szívesen jogot egy fájl futtatására sem, ezért marad a CLI mód.
Elsőre az SQLite-ra gondoltam, de kizárt, mert nem támogatott. :(
Nem szeretnék néhány ezer soros TXT fájlt parse-olni minden alkalommal, mivel évek alatt ki tudja mennyi jön létre. Mivel a fájlokat más program is használja, ezért a törlés/áthelyezés sem megoldás.
Valami tippetek van esetleg?
Köszi!
Throo
- 1644 megtekintés
Hozzászólások
Csak azt tárolnám le egy fájlban, h mikor futott utoljára a szkript, és az annál újabb fájlokat dolgoznám fel a következő futtatáskor.
- A hozzászóláshoz be kell jelentkezni
Nincs lehetőséged a már feldolgozott fájlokat berakni egy alkönyvtárba, amit utána nem monitorozol már?
A gyakorlatban ez sok ezer fájlnál már sokat gyorsít, már csak azon is, hogy nem kell mindig egy több ezres fájllistát átnéznie.
Nagy Péter
www.ddo.hu
- A hozzászóláshoz be kell jelentkezni
Nincs, a fájlokat nem csak ez a program használná, egy másik program aki generálja és igény esetén törli. Mi csak egy mellékes részt kell írjunk, amit a fő program nem tud elvégezni. A sokezer fájl bizony tud lassú lenni, de ezt majd varrják a fő program fejlesztőinek a nyakába. :)
- A hozzászóláshoz be kell jelentkezni
Ha csak az a feladat, hogy kövesd, hogy melyek az új file-ok (azaz az előző futás óta létrejött, vagy módosult file-ok), akkor nincs más dolgod, hogy feljegyezd valahova, hogy mely dátum volt az utolsó futás dátuma. Ezt megteheted úgy, hogy mondjuk egy .lastRun file access time-ját módosítod, vagy akár beleírod magát a dátum értékét is.
Futáskor előveszed a filet (ha még nem létezik a file, akkor ez az első futás, biztos, hogy nem dolgoztál még fel file-t), megnézed az access time-t (vagy beolvasod a benne lévő timestampet), és meg is van, hogy mely file-okat kell szűrnöd.
Teljesen felesleges a DB, ha nem akarod tárolni, hogy mely file-okat dolgoztad fel, csak azt kell eldöntened 1-1 file-ról, hogy feldolgoztad-e már vagy nem.
- A hozzászóláshoz be kell jelentkezni
Hülye kérdés, de nincs előttem windows: adott fájl ha áthelyezéssel érkezik a mappába, akkor valamelyik dátuma frissül az aktuálisra? (Nem volt róla szó, hogy csak új fájlok jönnek létre a mappában. szerk.: "jó lenne tudni mely fájlok jöttek létre", ez lehet akkor mégis új fájlokat feltételez)
- A hozzászóláshoz be kell jelentkezni
Igen, a Created az aktuális dátum lesz, viszont a Modified az eredeti. Utóbbit kell figyelned.
- A hozzászóláshoz be kell jelentkezni
Nem fordítva?
- A hozzászóláshoz be kell jelentkezni
Mekkora a fájlok mérete? Problémát jelent, ha csinálsz egy mappát, összeveted a két mappát, és csak az új fájlokat dolgozod fel (és másolod át a "history" mappába)?
Írtad, hogy más is használja a fájlokat, ezért gondoltam az áthelyezés nem jó megoldás, de ha a fenti nem, akkor marad a log file irogatás, futás elején betöltés, abban strpos keresgélés, hogy van-e az adott fájl már benne, ha nincs akkor feldolgozás és naplózás, ha van átlépem.
Esetleg ki lehet x napnál régebbi fájlokat zárni? Fájlok listázásakor aktuális dátumnál 2 nappal régebbieket figyelmen kívül hagyni?
- A hozzászóláshoz be kell jelentkezni
Elsőre az SQLite-ra gondoltam, de kizárt, mert nem támogatott. :(
Azt megkerdezhetem, miert nem tamogatott?
Most toltottem le a php.net-rol a 7.0.19 verziot (VC14 x86 Thread Safe (2017-May-09 20:36:44))
Miutan a php-ini-ben beallitottam az alabbi sorokat teljesen jol mukodott.
extension_dir="E:\Downloads\php\ext"
extension=php_sqlite3.dll
extension=php_pdo_sqlite.dll
- A hozzászóláshoz be kell jelentkezni
Hmm.. Bevallom becsületesen ez a kör kimaradt, de ellenőrzöm. :)
- A hozzászóláshoz be kell jelentkezni
xcopy *.txt c:\akarhova /C /F /H /D:05-25-2017
Ez csak az adott dátumnál újabb fájlokat másolja. Már csak azt kell megoldanod, hogy a dátum változó legyen és beolvassa egy fájlból, ahol tárolod az utolsó feldolgozás dátumát, majd az aktuális dátumot visszaírod. Alkalmasint ez egy egyszerű batch-el megoldható, amit berakhatsz a feladatütemezőbe és szépen lefut amikor akarod. Én így csinálnám, természetesen lehet jobb vagy egyszerűbb megoldás is.
- A hozzászóláshoz be kell jelentkezni
xcopy meg mindig elszall a 254 karakternel hosszabb fileneveknel
- A hozzászóláshoz be kell jelentkezni
Ez egy subst-al gond nélkül áthidalható.
- A hozzászóláshoz be kell jelentkezni
mi lett a megoldas?
- A hozzászóláshoz be kell jelentkezni