Autor | Zpráva | ||
---|---|---|---|
Levelson Profil * |
#1 · Zasláno: 15. 7. 2009, 11:31:30
Pro CRON potřebuju vytvořit jeden příkaz, ale nějak tápu :(...
Mám tabulku o sloupcích: id, id_uzivatele, zaznam, cas, ip Každému uživateli chci povolit maximálně 100 záznamů... A tudíž potřebuju vytvořit příkaz mazající všechny záznamy nad 100 všem uživatelům najednou s tím, že se smažou ty nejstarší záznamy. |
||
RockFire Profil |
$vyber_uzivatele = mysql_query("SELECT * FROM uzivatele WHERE id = 'XX'"); $pocet_zaznamu = mysql_num_rows($vyber_uzivatele); if($pocet_zaznamu > 100) { $smaz = $pocet_zaznamu - 100; $smazat = mysql_query(DELETE FROM uzivatele WHERE id = 'XX' LIMIT $smaz ORDER BY id DESC); if($smazat) { echo '<p><strong>Smazání proběhlo úspěšně</strong></p>'; } } Doufám, že jsem problém správně pochopil a že to bude fungovat, poněvadž si nejsem 100% jist funkčností ORDER BY id DESC v příkazu DELETE. Moderátor Alphard: Váš dotaz smaže ty nejnovější záznamy a navíc z tabulky uzivatele (katastrofě zabrání jen where id = 'XX', varuji před slepým kopírováním tohoto kódu.
|
||
Alphard Profil |
#3 · Zasláno: 15. 7. 2009, 12:04:13
Levelson:
Největší problém vidím v mazání všem uživatelům najednou, kolik jich tak řádově je? (jde mi o to, jestli je přijatelný cyklus, nebo to musí být na úrovni sql) |
||
Levelson Profil * |
#4 · Zasláno: 15. 7. 2009, 12:18:29
Aplikace je na začátku nasazení a nedokážu přesně odhadnou její provozní objemnost.
Tipuju že půjde časem o max. 10-20.... uživatelů najednou... Teď mně napadá možná by to zjednodušil další sloupec (pocet+1) při každém novém záznamu by připočetl hodnotu 1.... a dále by se to mohlo využít v podmíkách? |
||
Alphard Profil |
#5 · Zasláno: 15. 7. 2009, 12:29:24 · Upravil/a: Alphard
Levelson:
„Tipuju že půjde časem o max. 10-20.... uživatelů najednou...“ Tak to bych se nebál spuštět: $result = mysql_query ("select id from uzivatele"); while ($zaznam = mysql_fetch_assoc ($result)) mysql_query ("delete from vase_tabulka where id_uzivatele = {$zaznam['id']} order by id desc limit 100, 10000"); Jednou za týden nebo měsíc to nebude problém. |
||
Levelson Profil * |
#6 · Zasláno: 15. 7. 2009, 12:50:42
Díky Alphard ! fikané s tím polem...
Do jakých počtů uživatelů by to bylo asi přijatelné??? záznamy budou textové udaje o max cca 300 bytech |
||
RockFire Profil |
#7 · Zasláno: 15. 7. 2009, 13:53:07
Alphard: Díky moc, tak to jsem tomu zase dal.
|
||
Alphard Profil |
#8 · Zasláno: 17. 7. 2009, 01:54:44
Levelson:
Netroufám si moc hádat. Ale do stovky snad ok. Nejde o velikost, ale o počet. Dotazů má být pokud možno co nejméně, některé hostingy mají navíc nastavený limit. Na administrační stránce spouštěné cronem si můžete tovolit více, ale všeho s mírou. Nastavte cron na dobu, kdy servery nejsou moc vytížené a kdyby byly problémy, tak se to bude muset udělat jinak (tím myslím buď spuštět po dávkách nebo napsat složitější dotaz, který to udělá najednou; ale ani jedno nebude jednoduché). |
||
Časová prodleva: 15 let
|
0