Kezdőoldal » Számítástechnika » Weblapkészítés » Phpmayadminban belehet állítan...

Phpmayadminban belehet állítani, hogy egy tábal x percnyi inaktivitás után törölje magát?

Figyelt kérdés
Vagy van erre valami megoldás?

2015. okt. 13. 15:58
 1/7 anonim ***** válasza:
cron
2015. okt. 13. 16:33
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:
Nagyon szépen köszönöm, esetleg egy gyakorlati példát tudnál küldeni?
2015. okt. 13. 18:00
 3/7 anonim ***** válasza:

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.

2015. okt. 13. 22:57
Hasznos számodra ez a válasz?
 4/7 2xSü ***** válasza:
Az ilyen jellegű kérdéseknél én megállnék egy pillanatra. Csináltam én mindenféle honlapot, webalkalmazást, meg van némi rendszergazdai tapasztalatom is, de az életben nem volt olyanra szükségem, hogy egy táblát x percnyi inaktivitás után törölni kellett volna. Biztos, hogy jól tervezted meg, jól használod az adatbázist? Nem lehet, hogy a megközelítésed nyakatekert? Pontosan mit akarsz megvalósítani, miért kell neked egy táblát egy bizonyos inaktivitási idő után törölnöd?
2015. okt. 14. 02:35
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

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.

2015. okt. 14. 08:55
Hasznos számodra ez a válasz?
 6/7 2xSü ***** válasza:

#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.

2015. okt. 14. 11:42
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:

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!

2015. okt. 14. 19:09

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!