Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Automatsko brisanje zapisa nakon određenog vremena

PHP
  • 26 odgovora
  • 10.307 pregleda

Najnovija ↓

Re: Automatsko brisanje zapisa nakon određenog vremena 19.01.2003. u 03:03 · pre 289 meseci #2
zavisi kako si (i da li si) pamtio vreme unosa rekorda u bazu.

elem, najlaksi, (i od vecine php-ovaca najomiljeniji) nacin za cuvanje vremena u mysql-u je preko obicnog int polja, i preko time() php funkcije.

znaci, ako si pri unosenju unosio sa

Code:

$vreme=time();
mysql_query("INSERT INTO tabela SET kolona='$kolona', vreme='$vreme'");


onda i brises tako sto od trenutnog vremena oduzmesh 60*60*24*2 sekundi (dva dana).

Code:

$vreme=time()-2*24*60*60;
mysql_query("DELETE tabela WHERE vreme<'$vreme'");



e, ako koristish mysql timestamp, onda je sintaxa drugacija, ali to retko koristim, pa ne znam napamet...

Go! X: Izmenjeno imenovanje varijabli, $time != $vreme u prvom upitu ;)

[Ovu poruku je menjao Go! X dana 19.01.2003. u 11:49 GMT]
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Re: Automatsko brisanje zapisa nakon određenog vremena 19.01.2003. u 03:11 · pre 289 meseci #3
Mene zanima kako je moguće staviti da se pokrene skripta nakon određenog vremena?
 
Kolko ja poznajem PHP,nepostoji funcija koja to radi,znači samo sa nekim drugim jezikom je moguće uraditi tako nešto?
Re: Automatsko brisanje zapisa nakon određenog vremena 19.01.2003. u 03:34 · pre 289 meseci #4
stripi, ovo je totalno nevezano za temu, ali ajde oprosticu ti (josh) ovaj put ;)

elem, da, to ne moze iz php-a (niti moze iz bilo kog jezika, ako skripta / program ne radi stalno..)

to se radi najcesce preko cron-a ili crontab komande u linuxu/unixu. ako imash gde, kucaj crontab --h ili man cron...

ako vec nemash linux shell, postoji jedno slicno resenje.

imash drugara koji ima linux/unix makinu koja je 24/7 na netu, i trazis od njega da stavi u svoj cron komandu tipa wget http://www.tvojsajt.com/putanja/do/skripte.php (da se izvrsava na svakih 15 min recimo)

tvoja skripta treba da proveri koje je vreme, da li treba da se izvrsi (sta god da treba da radi) i ako treba, odradi to. vazno je da ne ispises nista (ili bar ne mnogo) da ne bi pravio veliki protok drugaru...


treca solucija je ako imash relativno posecen sajt. (relativno znaci recimo 500+ pageView-a dnevno).

onda stavish tabelu u kojoj ce da cuvash "taskove", sa vremenima kada treba da se izvrse, i poljem da li su vec izvrseni. pri svakom pageHit-u, proverish da li je neki task na redu da se izvrsi, i ako jeste, izvrsish ga i setujesh u bazi da je izvrsen...
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Re: Automatsko brisanje zapisa nakon određenog vremena 19.01.2003. u 12:32 · pre 289 meseci #5
Citat:
zombie / DDG:
stripi, ovo je totalno nevezano za temu, ali ajde oprosticu ti (josh) ovaj put ;)

Hmmm zar ima jos neki stripi ovdje ili si mislio na mene podsvjesno? :)
Btw. dobro si odgovorio gore iznad.
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: Automatsko brisanje zapisa nakon određenog vremena 19.01.2003. u 19:13 · pre 289 meseci #7
Citat:
StRiPy:
Citat:
zombie / DDG:
stripi, ovo je totalno nevezano za temu, ali ajde oprosticu ti (josh) ovaj put ;)

Hmmm zar ima jos neki stripi ovdje ili si mislio na mene podsvjesno? :)
Btw. dobro si odgovorio gore iznad.


:D lol

sorry. mora da sam citao neki tvoj post prethodno...


znaci, CONFOQ: ovo je totalno nevezano za temu, ali ajde oprosticu ti (josh) ovaj put ;)


josh jednom, :D, lol
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Re: Automatsko brisanje zapisa nakon određenog vremena 20.01.2003. u 14:43 · pre 289 meseci #9
Citat:
CONFIQ:
Mene zanima kako je moguće staviti da se pokrene skripta nakon određenog vremena?
Kolko ja poznajem PHP,nepostoji funcija koja to radi,znači samo sa nekim drugim jezikom je moguće uraditi tako nešto?

Posto su ti vec odgovorili za *nix sisteme, ako radis pod win2000 (odakle si pisao poruku), onda idi u dos prompt i pogledaj komandu "at" (bez navodnika). Radi nesto slicno kao cron ;) (at /? za pomoc)

E sad, ako nece "direktno" da ti pozove php fajl kako treba, a ti lepo to stavis u .bat fajl u kome imas liniju (ako nemas php u path-u):
\putanja_do_php\php -q skript.php
ili samo
php -q skript.php
i pomocu at-a odredis kad da se pokrece...
za kompletne opcije startovanja php-a kucaj php -h
Potpis
Kad sve ostalo zakaže, pročitaj uputstvo...
Re: Automatsko brisanje zapisa nakon određenog vremena 24.04.2009. u 16:02 · pre 213 meseci #10
izvinjavam se sto podizem temu iz mrtvih ali imam problem a treba mi ista stvar....

u mysql imam polje koje je type:TIME

scripta treba da brise sve upise starije od X sati (ajd neka bude 1H)

Code:

$server_time = date ('H:i:s');
$sql = "SELECT polje FROM tabela";
$rs = $conn->execute($sql);
$timelimit   = $rs->fields['polje'];    
$time = $server_time - $timelimit*60*60;
$sql = "DELETE vvl_log WHERE exp_time <'" .mysql_real_escape_string($time). "'";
$conn->execute($sql);


uradi on query,ime table sve je to ispravno kad uradim echo dobijem vrednosti iz baze...e sad ja mislim da sam pogresio oko $server_time tj da ne mogu od njega oduzeti 3600sec..

Jel na dobro ciljam? i kako da resim to ...

u bazi mi potrebno samo vreme....datum mi nije potreban...jer kazem brisace se svakog sata...


Potpis
Say NO to pop culture!!!
Crno je uvek u modi....
Re: Automatsko brisanje zapisa nakon određenog vremena 24.04.2009. u 21:44 · pre 213 meseci #15
Ako si pratio uputstva, a i dalje ti ne radi, verovatno upit gde brišeš zapis nije dobar.

Ovo kažem jer pretpostavljam da ti je polje exp_time tipa TIME a ti pokušavaš da ga uporediš sa integerom.

Uradi jedan echo upita pa ga postuj ovde, verovatno pokušavaš da porediš nešto tipa WHERE '03:26:32' < 1240579592 ili tako nešto.
Re: Automatsko brisanje zapisa nakon određenog vremena 24.04.2009. u 22:07 · pre 213 meseci #16
Ajde probaj onda da pored ova dva koraka koja sam ti predložio uradiš i ovo:
Code:

$server_time = time();
//...
$time = $server_time - strtotime($timelimit);
$time = date('H:i:s', $time);
//...

Tu su ti sad sve tri izmene. Taj prvi argument f-ji date bi trebao da bude onaj format u kome čuvaš to vreme u bazi...

A i sad mi pade napamet, ako je tebi cilj da brišeš neke zapise starije od određenog vremena, ona to sve može da se odradi u tom jednom upitu, npr.:
Code:

DELETE FROM vvl_log WHERE exp_time < CURTIME() - 100000

To bi trebalo da obriše sve zapise starije od 10 sati. Mora da se piše kao 100000, pošto je f-ja CURTIME(), kada se koristi u proračunima, u formatu HHMMSS.uuuuuu, što znači ako je sada npr. 22:00:00, CURTIME() - 100000 će dati 120000.000000.
Re: Automatsko brisanje zapisa nakon određenog vremena 24.04.2009. u 23:00 · pre 213 meseci #17
Citat:
Tudfa:Ovo kažem jer pretpostavljam da ti je polje exp_time tipa TIME a ti pokušavaš da ga uporediš sa integerom.

nema sta da pretpostavljas ja sam to napomenuo u postu ;)

Citat:
Uradi jedan echo upita pa ga postuj ovde, verovatno pokušavaš da porediš nešto tipa WHERE '03:26:32' < 1240579592 ili tako nešto.


tacno
DELETE vvl_log WHERE exp_time <'1240606308'


Citat:
Nikola Poša:
Code:

$time = date('H:i:s', $time);


mislio si $timelimit ?

Citat:

Code:

DELETE FROM vvl_log WHERE exp_time < CURTIME() - 100000


ok je to al ne mogu da koristim....$timelimit ce mi biti promenljiv tj iz AdminCP-a ce se moci menjati vremenski period (polje za upisivanje i user stavi 1-2-3-XX sati )
Potpis
Say NO to pop culture!!!
Crno je uvek u modi....
Re: Automatsko brisanje zapisa nakon određenog vremena 24.04.2009. u 23:35 · pre 213 meseci #18
Citat:
bugsu:nema sta da pretpostavljas ja sam to napomenuo u postu ;)

Pa ako je tako onda moraš da uporedjuješ vreme u pravom formatu.

To ćeš postići tako što ćeš promenljivu $time koju koristiš u DELETE upitu dovesti u isti format u kojem su podaci sačuvani u bazi.

Samo iskoristiš ovo što ti je već predloženo:

[quote]Nikola Poša:
Code:
//...
$time = date('H:i:s', $time);
//...

Re: Automatsko brisanje zapisa nakon određenog vremena 25.04.2009. u 10:33 · pre 213 meseci #19
Citat:
bugsu: mislio si $timelimit ?

Ne, mislio sam baš na $time, a objasnio ti je Vlaidmir zašto...

Citat:
bugsu: ok je to al ne mogu da koristim....$timelimit ce mi biti promenljiv tj iz AdminCP-a ce se moci menjati vremenski period (polje za upisivanje i user stavi 1-2-3-XX sati )

Pa dobro, nisam ja mislio da onih 100000 bude fiksno, ti to što izabereš u admin panel-u, možeš da prebaciš u ovaj format "čitljiv" za CURDATE(). Npr. ako izabere 1, ti ćeš to prebaciti u 010000, 2 => 020000, itd.

Re: Automatsko brisanje zapisa nakon određenog vremena 25.04.2009. u 19:24 · pre 213 meseci #20
sad vec pocinjem da razmisljam jer sam ja stvarno glup or what....


Code:

$server_time = time();
$time = time() - strtotime($timelimit*60*60);
$time = date('H:i:s', $time);
$sql = "DELETE FROM vvl_log WHERE exp_time <$time";


echo
Code:
DELETE FROM vvl_log WHERE exp_time <12:04:00 
server time is  12:04:00

sad dobijem sta mi treba al ne oduzima X od trenutnog vremena.....
Potpis
Say NO to pop culture!!!
Crno je uvek u modi....
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme