Autor Zpráva
Ofi
Profil
Neměl jsem moc času ale forko sem prolít a portály co znam taky.
Potřebuju mít v databázi tabulku ve které data přežijí jen den od jejich vytvoření.
napadaj mě dva způsoby ale nevím jestli jsou reálné ale pokud jo tak bych prosil nějaké zpracování:
1) nějaký příkaz přímo v MySQL který vytvoří dočasná data (na ten den) a po té době budou smazány
2) nebo bych napsal script, který by prošel tabulku a smazal bych všechna data starší než 24 hodin a ten script by se spouštěl automaticky sám na serveru každý den v přesný čas.

proč to chci? při registraci vytvořim jedinečné id pro uživatele, které potřebuji někde uchovat než si to id uživatel přes email ověří (neboli aktivační email). nemám s tím zkušenosti a tohle mě napadlo jako první.

jestli existuje nějaké standartní řešení tak sem s nim:)
fuckin
Profil
takto bych to urcite neresil. Pouzivas slovo docasna tabulka ale pritom se bavis uplne o necem jinem.
1) IMHO tipl bych ze nelze
2) lze ale...
nej by bylo normalne vytvorit uzivatele ale nastavit mu hodnotu ve sloupci aktivovan na 0. Az se aktivuje tak tam hodis 1. Takto se to resi ve vsech cms/rs co znam.
Ofi
Profil
Fuckin - tak to mam - ale ja prave chci aktivovat uzivatele na zaklade aktivace z emailoveho odkazu, ktery nese nahodne vygenerovane id (ulozene v databazi)
př.: http://adresa.cz/aktivuj.php?user=42&id=8j76cre8890his76h5f90h
pak jenom zjistim jestli id a uzivatel koresponduji s daty v databazi a uzivatel se automaticky aktivuje(true - 1) pokud ano
- a na tu aktivaci ma pouze den(po dni se vymaze nahodne vygenerovane id a data o nem v db pokud se neaktivuje). takze si me asi nepochopil uplne - ale napsal sem to asi moc kostrbate :)
Alphard
Profil
Jednoduše si ukládejte u každého záznamu datum. Pak není problém zjistit, je-li záznam starší než den, popř. lze snadno záznamy starší než den smazat.
Ofi
Profil
No ale tak mi řekni jak udělat aby se na serveru automaticky spustil script na kontrolu toho datumu pravidelně každý den v určitou dobu, protože já se nechci spoléhat na aktivity na stránkách, chci to nezávisle... viz. můj první příspěvek.
Alphard
Profil
Cron, ale není nutné mazat to pravidelně.
Kontrola času by měla být součástí ověření uživatele (jen se připojí podmínka do where) a je úplně jedno, jestli se staré záznamy budou mazat každý den nebo jednou za tři měsíce.
Ofi
Profil
Tak úplně jedno to není, nechci aby uživatelům co se neaktivují včas zůstávala zbytečná data v db - (ty 3 měsíce řekněme) (jde tu o to aby databáze byla co nejmenší - řekněme, že je to i částečná ochrana proti spambotům, která s dalšími dvěmi antispamovými "kontrolami" tvoří docela spolehlivý systém díky němuž se můžu vyhnout otravným captchám a přesto udržet databázi čistou.

Vím že to jde nastavit to aby se script sám spustil na serveru v určitou dobu pravidelně - někde jsem to četl - měsíc z5 - nepřikládal sem tomu tenkrát důležitost a teď lituji že jsem si neuložil odkaz na tu stránku, ted uz ji nemuzu najit :(
Kajman_
Profil *
aby se script sám spustil na serveru v určitou dobu pravidelně
Buď zmíněný cron nebo event přímo v mysql (od verze 5.1)
http://dev.mysql.com/doc/refman/5.1/en/create-event.html
Jannik
Profil *
A co kdyby jsi ty data nemazal, ale dal podmínku, aby se zobrazovala pouze ta jejichž stáří není více jak 24 hodin.

Další věcí je, že pročistit tabulku můžeš ještě před tím, než se zobrazí výsledky (tj. asi by to bylo zbytečně často, ale pokud máš obavy o nízkém počtu aktivit na stránkách...)
Ofi
Profil
Kajman_ : díky - tohle jsem potreboval videt - to bylo ono co jsem mel namysli ;)
Jannik: ee :D neslo o obavy nizke navstevnosti ale o nezavislost - kdyz pujde na stranky 1000lidi denne tak je zbytecne tu funkci volat 1000x,ale cisteni databaze je nutnost - opacnej extrem by mi nevadil (co se teda tyce te funkce - jinak smz vadil :D - protoze 0lidi = 0registraci -> netreba cistit , nebo 4lidi za den/2 registrace treba = za mesic malo dat v tabulce ->netreba cistit (casto)...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0