Pereiti prie turinio

Atsitiktinio sveiko skaičiaus generavimas kas 24h.


Rekomenduojami pranešimai

Noriu padaryti, kad kas 24h. generuotų naują sveiką skaičių ir pagal sugeneruotą skaičių (ID) trauktų ir atvaizduotų įrašus iš duomenų bazės.

 

Viską turiu pasirašęs, taip pat ir sveiko skaičiaus generavimą, bet esmė tame, kad generuoja kaskart užkrovus naujai puslapį.

 

 

Žinau, kad su cronjob eitų tokį dalyką padaryti (kviečiant f-ją kas 24h.) bet gal žinote kitokių būdų kaip tai padaryti? :)

 

p.s. veiksmas su php čia

Nuoroda į pranešimą
Dalintis kituose puslapiuose

irasik skaiciu i faila, ir ziurek kada buvo modifikuotas failas.

pavizdys:

 

<?php
$failas = 'skaicius.txt';
$laikas = '86400'; // 60 sekundziu * 60 minuciu * 24 val

$filemtime = @filemtime($failas);
if (!$filemtime or (time() - $filemtime >= $laikas)){
$skaicius = intval(rand());
file_put_contents($failas, $skaicius);
}else{
$skaicius = file_get_contents($failas);
}

echo "skaicius yra: ". $skaicius;
?>

 

intval(rand()) pasikeisk i savo funkcija, kuri generuoja ta skaiciu pagal tavo reikalavimus, kas be ko :)

Redagavo sesee
Nuoroda į pranešimą
Dalintis kituose puslapiuose

tai kas be ko :) kitaip arba demoniukas tures koks kabeti (bevertiska tokiai smulkmenai) arba crontab'a kas para kuris paleistu.

Logiskai mastant tai svetainei jokio skirtumo kada ji sugeneruos svarbu, kad veliau nei 24h tik idomu kam jam to reikia. Idomu ar cia nebus taip, kad nori padaryt koki dalyka ir eina pro aplinkui. :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

dazniausiai, deja, taip ir buna. zmones kazka nori padaryt, sumasto savo nesamoninga dalyka kuri nezino kaip padaryt ir tada klausineja. o tai, kad rezultato norimo galima pasiekti daug grazesniu / patogesniu / logiskesniu budu - tai jau nesvarbu.

o tada atsiranda visokie lietuviski "cms'ai" kaip smartweb, oxid ar dar koks briedas, i kuriu koda paziurejus geriau nusisautum vietoj, o apie performance'a sneketi isvis neimanoma (oxid'as turbut palaiko viena zmogu vienu metu browsinanti, iskaitant ir google bot'a, ant quad korinio servo su 64gb ram'o ir ssd diskais sukistais i raid50)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

dazniausiai, deja, taip ir buna. zmones kazka nori padaryt, sumasto savo nesamoninga dalyka kuri nezino kaip padaryt ir tada klausineja. o tai, kad rezultato norimo galima pasiekti daug grazesniu / patogesniu / logiskesniu budu - tai jau nesvarbu.

o tada atsiranda visokie lietuviski "cms'ai" kaip smartweb, oxid ar dar koks briedas, i kuriu koda paziurejus geriau nusisautum vietoj, o apie performance'a sneketi isvis neimanoma (oxid'as turbut palaiko viena zmogu vienu metu browsinanti, iskaitant ir google bot'a, ant quad korinio servo su 64gb ram'o ir ssd diskais sukistais i raid50)

 

Na, savo idėja parašiau ką noriu padaryti :) kad kas 24h. generuotų naują skaičių ir pagal sugeneruotą id trauktų įrašą iš duomenų bazės taip, kad kas 24h. būtų vis naujas įrašas. O jeigu turi geresnę idėją kaip tai padaryti - sakyk, nes jeigu žinočiau nekurčiau temos forume. ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

tai jei jau duombaze turi, tai ir tuos skaicius gali palaikyti duombazei. tada butu paprasta:

 

turim 'irasai' lenta:

 

CREATE TABLE `irasai` (
 `id` int(11) NOT NULL auto_increment,
 `vardas` varchar(255) NOT NULL,
 UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

 

pora testiniu irasu:

 

INSERT INTO `irasai` VALUES (1,'pirmas'),(2,'antras'),(3,'trecias'),(4,'ketvirtas'),(5,'penktas'),(6,'sestas');

 

turim 'skaiciu' lenta:

 

C

REATE TABLE `skaiciai` (
 `data` date NOT NULL,
 `irasas` int(11) NOT NULL,
 UNIQUE KEY `data` (`data`),
 KEY `ir` (`irasas`),
 CONSTRAINT `skaiciai_ibfk_1` FOREIGN KEY (`irasas`) REFERENCES `irasai` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

ir tada su vienu queriu ipisam randomini skaiciu is 'irasai' lentos i 'skaiciai' lenta:

 

insert IGNORE into `skaiciai`(`data`, `irasas`) values(now(), (select `id` from `irasai` order by rand() limit 1));

 

sitas queris irasis irasa tik viena karta, jei jau irasas siai dienai yra - jis nieko neirasys.

 

o gauti iraso numeri paprasta kaip

 

select `irasas` from `skaiciai` where `data` = date(NOW());

 

papildomas bonusas tai kad turi normalia skaiciu istorija, o deka foreign key'u, jei is 'irasai' dings eilute, ji dings ir is 'skaiciai', todel jei skaicius nebegalioja - tai sugeneruos tau nauja skaiciu.

 

edit: vis pamirstu apie [

]
Redagavo sesee
Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 3 mėnesių...


  •  
  • Susikuri generuoti.php failiuką, kuriame iškvieti ID generavimą ir tą reikšmę įrašai į DB (tarkim, options lentą => randomid = 55).
  • Tada su cronjob kiekvieną 00:00 kvieti http://tavosvaetaine.lt/generuoti.php.
  • Index puslapy ar kokiam sidebar'e, ten kur bus ta prekė atvaizduojama, išsitrauki tą ID iš options lentos ir susirandi tą prekę pagal ID.

 

Ir nereikia jokių papildomų txt failiukų ar jų datų.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...