Phpmayadminban belehet állítani, hogy egy tábal x percnyi inaktivitás után törölje magát?
Lusta vagyok megírni helyetted, de én úgy csinálnám, hogy:
adatbázisban egy tábla, ami tárolja, hogy melyik tábla mikor lett utoljára használva (te updateled mindig), mivel a legtöbb motor nem logolja az utolsó használatot (kivéve myisam talán).
cron lefut X percenként, megnyitja xy.php-t, amiben megnézi, hogy hány perc telt el az Y tábla használata óta, ha több mint amire gondoltál, akkor droppolod.
Ha valami gagyi tárhelyen vagy, és cront nem tudsz használni, akkor elég nehéz erre jó alternatívát találni. Persze ez az eset olyan, hogy minden oldal lekéréskor lefuthatNA, de felesleges lassuláshoz vezet, így a B terv olyasmi, hogy:
szintén egy táblába eltárolod, hogy mikor futott le utoljára a törlő kód, ezt lekéred, ha azóta eltert X idő, akkor mehet a kód ami ugye ellenőrzi, hogy volt-e aktivitás meg ilyenek.. leegyszerűsítve ennyi.
Nem lehet, hanem egyértelműen szar megközelítés.
Valószínűleg ugyanaz a gyökér, aki felhasználónként akar új táblát létrehozni.
#5: Nem gyökér az, csak kezdő, aki alapismeretek hiányában akar adatbázist tervezni.
De nézzünk egy általános megközelítést. Mondjuk oké, minden usernek van egy adattáblája. Mondjuk ennek sem látom sok értelmét, ami ideiglenes adat azt eleve érdemes session-ben tárolni, de nézzük meg a probléma általános megoldását. Mondjuk minden usernek van egy táblája, egy azonosító alapján:
tabla_user_1
------
INT mezo_1
VARCHAR(30) mezo_2
DATETIME lejar
tabla_user_2
------
INT mezo_1
VARCHAR(30) mezo_2
DATETIME lejar
Akkor ezt így érdemes felépíteni:
tabla_userdata_expire
------
INT user_id
DATETIME lejar
tabla_userdata
------
INT userdata_id (autoinc)
INT user_id
INT mezo_1
VARCHAR(30) mezo_2
Ekkor mondjuk ez a lekérdezés:
SELECT mezo_1, mezo_2 FROM tabla_user_1
így módosul:
SELECT mezo_1, mezo_2 FROM tabla_userdata INNER JOIN tabla_userdata_expire ON (userdata_user_id = tabla_userdata_expire.user_id) WHERE (user_id=1) AND (lejar>NOW())
A takarítással különösebben nem is kell foglalkozni, csak ha nagyon nagyra nőne az table_userdata adattábla. De ezt cron-ból is lehet tisztítani, vagy mondjuk egy bejelentkezés alkalmával:
DELETE FROM tabla_userdata WHERE user_id IN (SELECT user_id FROM tabla_userdata_expire WHERE lejar<NOW())
Persze egy adott problémánál lehet cizellálni a képet, ez csak afféle szemléltetése annak, hogy egy ilyen jellegű problémát hogy kell megoldani. Mindenesetre az elv az, hogy egy adatbázist úgy kell kialakítani, hogy a rendes működés során ne kelljen az adatbázis szerkezetét módosítani, se táblát, se mezőket ne kelljen se létrehozni, se törölni, se módosítani. Ha ennek a szüksége mégis felmerül, az azt jelenti, hogy az adatbázis felépítése rossz. A normál működésnél csak és kizárólag adatokat szabad létrehozni, módosítani, törölni. (Persze vannak természetesen kivételek, pl. egy CMS telepítőnél természetesen létre kell hozni táblákat, vagy egy webhosting admin felületén természetesen a működésből fakadóan kell adatbázisokat, adattáblákat létrehozni, törölni. De egy ilyen megírása meg feltételez annyit tudást, hogy ismered pl. a cron használatát.)
Persze ahhoz, hogy jól kezeld az adatbázist, ahhoz azért alaposan ismerni kell az SQL-t, tudnod kell több táblát összekapcsolnod, megfelelő kritériumok alapján szűrnöd, adatot törölnöd, indexeket kezelned, stb…. Illetve ismerned kellene az adatbázis tervezés kritériumait is.
Köszönöm a sok választ, nagyon jól esik, és tényleg tapasztalatok híján vagyok.
Szóval, egy egyszerű lobbiszerűséget szeretnék készíteni, amiben a tagok egymást követően egy halmazból elemeket "szúrhatnak" ki (kattintással kiveszik a halmazból). Alap elképzelés, hogy minden új lobbi elkészítésénél egy új tábla jönne létre (informatika tanárom ezt javasolta). Na most, ha ezekben nem történik esemény törölni kell őket, mert előbb utóbb megtelik az adatbázis.
Erre szeretném használni!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!