KarlisBa Posted August 25, 2008 Report Share Posted August 25, 2008 Sveiki! Ir datubāze kurai ir 3. tabulas un vienā no tām tabulām ir tikai skaitļu ieraksti. Piemēram, "13" un tas skaitlis ir domāts kā minūtes ir arī "12049943" minūtes. Doma tāda kā panākt, lai no tā brīža, kad datubāzē ir ievietots tajā tabulā šis skaitlis, tas ieraksts automātiski izdzēstos kopā ar pārējiem ierakstiem, kas ir saistīti ar šo ierakstu? Link to comment Share on other sites More sharing options...
Kristabs Posted August 25, 2008 Report Share Posted August 25, 2008 php skripts, kurš tiek izsaukts ar crontab no komandrindas. Link to comment Share on other sites More sharing options...
Ghenis Posted August 25, 2008 Report Share Posted August 25, 2008 Triggeri. Link to comment Share on other sites More sharing options...
bubu Posted August 25, 2008 Report Share Posted August 25, 2008 Un kurš izsauks tavu trigeri, Ghenis? Link to comment Share on other sites More sharing options...
Grey_Wolf Posted August 25, 2008 Report Share Posted August 25, 2008 (edited) bubu --> vispar daljai jautajuam atbilde tiesam ir trigeri ;) , bet tik tiesam ja neizmanto cronu (vai ko liidzigu), kas tad tos trigerus izsauks.. -- shalonik --> pacenties noformulet savu jautajumu skaidraak ... Cik sapratu tad faktiski ir 2 jautajumi .. Kaa idzeest ierakstu peec noteikta laika --> skaties Kristabs atbildi UN kaa idzeest parejos automatiski --> skaties Ghenis atbildi .. -- + LUUDZU tomer nakemreiz pastasti KADAI OP SISTEMAI UN KADA DB (velams arii versija) .. savaadak atbilde buus kada nu vinja ir ... Edited August 25, 2008 by Grey_Wolf Link to comment Share on other sites More sharing options...
korkijs Posted August 26, 2008 Report Share Posted August 26, 2008 "on delete cascade" - paprasi šo gūglei, jo nezinot situāciju un dbvs liekas, ka prasti tavu saistīto ierakstu problēmu var risināt kaut kā tā. ierakstu dzēšana: 1) cron izsaukts skripts ar DELETE (vai MS SQL jobs ar DELETE TSQL, tak nezinām lietotās tehnoloģijas) 2) visas datu manipulācijas saistībā ar šo tabulu sākam ar DELETE 1ais variants ir skaisti un pareizi, 2ais ātri. Link to comment Share on other sites More sharing options...
Maris-S Posted August 26, 2008 Report Share Posted August 26, 2008 No jautājuma nav īsti zināms kādi ieraksti un kā ir saistīti, tomēr ja datubāze pieļauj relationshipus, tad iespējams ka tos varētu izmantot. Link to comment Share on other sites More sharing options...
KarlisBa Posted August 26, 2008 Author Report Share Posted August 26, 2008 (edited) Labi vēlviens piemēras ar zīmējumu. datubāze: id | iraksts1 | ieraksts2 | ieraksts3 Pieņemsi, ka ierakstā3 tiks likts iekšā skaitlis, kas tiek piedēvēts minūtēm. Ierakstā viens ir kaut kāds vārds vai skaitlis tā pat kā ierakstā2. Vajadzīgs ir skripts, kas ieraksta3 informāciju uztver kā minūtes laika vienību un no tā ielikšanas brīža pa sekundei skaitītu nost. Doma tāda, ja ierakstā3 ir ielikts skaitlis 3, tad pēc 3. minūtēm no tā brīža, kad tika ielikts skaitlis visi pārējie ieraksti, kas ir pie tā id tiktu izdzēsti gan ieraksts1, gan ieraksts2, portams, arī ieraksts3. Tādi ieraksti ir vairāki, piemēram. id1 | iraksts1 | ieraksts2 | ieraksts3 id2 | iraksts1 | ieraksts2 | ieraksts3 id3 | iraksts1 | ieraksts2 | ieraksts3 id4 | iraksts1 | ieraksts2 | ieraksts3 id5 | iraksts1 | ieraksts2 | ieraksts3 id6 | iraksts1 | ieraksts2 | ieraksts3 Tagad piemēram pie id1 ierakstam3 ir ierakstīts 5 id4 ir piemēram 10 .u.t.t un katrs notiem tiek atsevišķi skaitīts uz atpakaļu līdz 0 sekundei no, piemēram, 10. minūtēm skaita pa sekundei vai minūtei uz atpakaļu un sasniedzot 0. sekundi, tas izdzēšas no datubāzes. Tagad doma ir skaidrāka? P.S Linux sistēma mysql versija 5.0.45. Edited August 26, 2008 by shalonik Link to comment Share on other sites More sharing options...
codez Posted August 26, 2008 Report Share Posted August 26, 2008 glabā katram ierakstam izdzēšanas laiku. Piemēram, ja jāizdzēš pēc 10 minūtēm, tad saglabā šis brīdis + 10 minūtes. Un tad dzēš arā visus, kuriem laiks ir mazāks par šībrīža laiku. Link to comment Share on other sites More sharing options...
KarlisBa Posted August 26, 2008 Author Report Share Posted August 26, 2008 Varētu dot nelielu mājienu vai kādus vārdus pēc kā skatīties? Jo, domu sapratu, bet kā uztaisīt īsti nezinu! Link to comment Share on other sites More sharing options...
Grey_Wolf Posted August 27, 2008 Report Share Posted August 27, 2008 (edited) DB neko neskaita un neko nerekjinaas , ta tomer ir baredzeta Datu glabasanai Nevis apstradei .. 1. glabaa nevis Minutes bet gan Sekundes 2. kaa jau tika minets tad teiksim 3 ieraksts buus Sibriza laiks(unix time formataa) + 180 ... 3. pie parbaudes : Parbaudzi vai 3 ieraksts nav mazaks par sibriza laiku (unix time formataa) ja ir tad nodeletee visu rindu (ierakstus ) tas arii viss... --- PHP pusee unix time laiku dabuun ar f-ju time() taadad izveides laikaa buus $patreiz_laiks=time(); $vajadzigais_laiks= $patreiz_laiks+180; // 3 minutes // Sho arii rakstam DB Un attieciigi parbaudi DELETE FROM tabulis WHERE lauks3<UNIX_TIMESTAMP() edit: aizmirsu piebilst : lauka tipam izmanto INT un nevis kaadu citu ... + sho parbaudei pieliec pasaa skripta(u) sakumaa .. taatad jebkursh lietotaajs kas ieies lapaa (izmantos sho skriptu) automatiski parbaudiis vai nav ja iztecejis dotais laiks (arii citiem useriem ...) .... Cron laist ar 1 intervalu buutu pastuulbi , jo DB tiks dzenaata arii taja briidii pat tad kad nav neviena apmekletaja ... Edited August 27, 2008 by Grey_Wolf Link to comment Share on other sites More sharing options...
Gints Plivna Posted August 27, 2008 Report Share Posted August 27, 2008 Vēl viena iespēja ir attēlojot (jo es tā naivi pieņemu, ka dzēst gribas tāpēc, lai pēc tam tos datus nevarētu attēlot) un visur citur, kur notiek šo datu apstrāde, uzliek vienkāršu where klauzu, kas paskatās uz ielikšanas laiku, sekundēm cik ilgi jāglabā un pašreizējo laiku un izmantojot astronomisku mega funkciju no šiem datiem izrēķina, vai ierakstu rādīt vai nē. Savukārt, lai tādi dati nesakrātos lielām grēdām, tad uzstutē to pašu cron procesu, kas periodiski (reizi stundā, pusstundā, dienā, atkarībā no datu daudzuma un intervāliem) palaiž skriptu, kas izdzēš neglābjami novecojušos datus. Skriptā, protams, tad attiecīgi var dzēst vispirms no bērnu tabulām, un tad visbeidzot vecāka tabulas. Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
KarlisBa Posted August 27, 2008 Author Report Share Posted August 27, 2008 Vispār situācija ir tāda, ka vajag, lai viņš arī dzēš ja neviens neapmeklē mājas lapu... Pati datubāze ar datiem nav domāta priekš web lapas, bet no web lapas to tikai konkrotlē. Pati db ir piesaistīta citai lietai no kā arī tur tiek ievadīti dati db. Bet vai to pašu php skriptu nevar uztaisīt tā, lai viņš pats ik pēc piemēram 1-5. minūtēm pārbauda vai kādam failam nav iztecējis laiks un dzēš to? Jo to datu ievade notiek be maz vai ik pa 5. minūtēm un dažreiz minūtes ir 1-10 un dažreiz 10000 tākā labākajā gadījumā, ka viņš visu laiku pārbauda nu vismaz ik pēc 5. min... Bet tāpat paldies mēģināšu to tavu grey_wolf uztaisīt. Link to comment Share on other sites More sharing options...
Grey_Wolf Posted August 27, 2008 Report Share Posted August 27, 2008 ka viņš visu laiku pārbauda nu vismaz ik pēc 5. min... Nee nevar Jo kaa jau mineju tad DB nav domata sadiem merkjiem .. Nu tad uzliec Cron lai parbauda ik peec paris minuteem --> faktiski saads pieprasijums jau nav tik noslogojosh , lai to nedariitu ... Link to comment Share on other sites More sharing options...
KarlisBa Posted August 27, 2008 Author Report Share Posted August 27, 2008 Tā līdz šim visu sapratu, bet tik tiko sapratu, ka neizprotu vienu lietu. Ja jau skripts salīdzina vai paškreizējais laiks ir lielāks par datubāzē ievadīto kā, tad būs ja ievadīs piemēram 1200000 minūtes? Tad viņš pats arī tās dienas noskaitīs? Link to comment Share on other sites More sharing options...
Recommended Posts