Toon posts:

[php+mySQL] records verwijderen na XX aantal uur

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil dus een record 24 uur nadat het is aangemaakt laten verwijderen uit mijn database. Ik geef dus in een veld de tijd mee waarop het record is gemaakt.

Nu moet ik alleen nog een manier hebben waardoor het veld na 24 uur verwijderd wordt. Op linux servers kan het dacht ik met CRON, maar ik draai mijn site op lycos en daar kan ik dus helemaal niets wat betreft linux.

Weet iemand hoe ik dit wel kan doen. :?

Verwijderd

Gewoon in je select records ouder dan 24 wegfilteren en zelf handmatig periodiek de db opschonen.

  • LeonT
  • Registratie: Juni 2001
  • Niet online
Of een scriptje maken met
code:
1
DELETE FROM tabel WHERE timestamp < $timestamp_van_24_uur_geleden

Verwijderd

Ja dat laatste is gewoon het handigst. Gewoon in je index.php file gooien

Verwijderd

Verwijderd schreef op 25 augustus 2002 @ 22:35:
Ja dat laatste is gewoon het handigst. Gewoon in je index.php file gooien
Maar dan moet die dus wel bezocht worden :X :)

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 18-03 12:10
Gewoon een filter in je selectquery en ffies een cronjob maken die 1x per dag de database opruimt.

=( Protected by witchcraft )=


  • Pietb
  • Registratie: Maart 2001
  • Niet online
Dryw.Filtiarn schreef op 25 augustus 2002 @ 23:21:
en ffies een cronjob maken die 1x per dag de database opruimt.
Heb je wel gelezen wat de vraag was? :?

Ik denk dat de beste oplossing inderdaad het handmatig opschonen is, zo voorkom je ook dat gebruikers moeten wachten tot de "verlopen" data is verwijderd.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Verwijderd schreef op 25 augustus 2002 @ 23:19:
[...]

Maar dan moet die dus wel bezocht worden :X :)
Dus? ;)

Prachtige oplossing dit. Er is namelijk geen een gebruiker die ooit zal zien dat er iets niet klopt. Al wordt je site een week lang niet bezocht, dan zal bij het eerst volgende bezoek je database worden opgeschoond voor dat de gebruiker de pagina ziet.

Verwijderd

... Met als enige nadeel dat als je een site hebt met behoorlijk wat bezoekers, er bij iedere bezoeker een extra query moet worden uitgevoerd, het lijkt op het eerste gezicht niks maar met 10000 views van je index.php ...

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Misschien kan je beter dagelijks tussen 23:30 en 00:30 de oude records laten verwijderen. Via je index.php welliswaar.

Ik blijf er iig vrij nuchter onder....


  • HermeS
  • Registratie: Maart 2000
  • Laatst online: 20:20
Verwijderd schreef op 26 augustus 2002 @ 07:07:
... Met als enige nadeel dat als je een site hebt met behoorlijk wat bezoekers, er bij iedere bezoeker een extra query moet worden uitgevoerd, het lijkt op het eerste gezicht niks maar met 10000 views van je index.php ...
Dan zal hij hem denk ik ook niet bij lycos hosten toch?

En anders maak je gewoon een html file met de juiste query aan, en laat je jouw server hem elke dag even opvragen (dus niet index.html)?

  • judgem
  • Registratie: December 2001
  • Laatst online: 28-04-2014

judgem

Lord of Metal

Zoiets ben ik dus ook van plan maar dan met een concertagenda. Ik wil namelijk de concerten die al geweest zijn automatisch uit mijn database laten verwijderen. De manier hierboven beschreven spreekt me heel erg aan moet ik zeggen alleen vraag ik me dan wel het volgende af:

Hoe moet ik die concertdata dan in mijn database opnemen? Ik ben voor mijn CMS bezig om het doen middels 3 variabelen $dag, $maand en $jaar. Maar hoe kun je zoiets het makkelijkst terugzetten naar een actuele timestamp? En nog belangrijker: Hoe zorg je er vervolgens voor dat de concerten niet al op de dag van het concert zelf al uit de database gemikt worden?

If anyone knows, let me know... :7

- Ik bespreek ook harde waren en dan wel op www.lordsofmetal.nl - en ik draai en programmeer ze in DYNAMO


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Verwijderd schreef op 26 augustus 2002 @ 07:07:
... Met als enige nadeel dat als je een site hebt met behoorlijk wat bezoekers, er bij iedere bezoeker een extra query moet worden uitgevoerd, het lijkt op het eerste gezicht niks maar met 10000 views van je index.php ...
Je doet het natuurlijk niet bij elke bezoeker. Je schrijft gewoon een file weg als je het hebt gedaan, en die probeer je elke keer te locken (zodat de cleanup niet per ongeluk twee keer gebeurt) en de bestands datum op te vragen. Als de datum oud is, voer je je query uit.

  • ReLexEd
  • Registratie: Juli 2000
  • Laatst online: 16-10-2025

ReLexEd

2 ReLexEd or not 2 ReLexEd???

Waarom niet gewoon in je select-query (op de pagina die de gebruiker te zien krijgt, alleen maar de relevante records selecteren, en gewoon de rest niet laten terugkomen in de query-results?

Je kunt toch zeker als je een timestamp of zelfs een date/time veldje toevoegd, hierop een selectquery loslaten?

Je draait dan gewoon zelf (handmatig) via een admin-sectie een delete-query die de verouderde boel uit je DBtje mikt..

Je bezoekers zien alleen de relevante records, en dat er in de DB veel meer zit, als je zelf maar eens per week de boel update, daar merken zij niets van...

Dit heeft in mijn ogen maar een nadeel, als je een enorme tabel hebt, kan de qeury even duren, maar dan moet je het toch wel over een behoorlijk groot aantal records hebben...

Ik doe iets vergelijkbaars met een lijst met DVD-releases, waar ik eens per maand met de hand alle nieuwe releases die bekend zijn in frot... vervolgens laat ik in de selectquery alleen de records ophalen die nieuwer zijn dan vandaag... Ce's tout!

In m'n admin-gedeelte een knoppie, waarmee ik zelf in 1 keer de hele zwik oude records kan kieperen, en eventueel nog een oud record kan bijwerken, en weer kan recyclen.... meer is er toch niet nodig?!?!? :P

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Wat is trouwens de reden dat het perse verwijderd moet worden :?
Wil je in geen geval ooit die dingen bijv per 48 uur laten zien ipv per 24 etc...

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 22:19

JaQ

judgem schreef op 26 augustus 2002 @ 12:05:
Hoe moet ik die concertdata dan in mijn database opnemen? Ik ben voor mijn CMS bezig om het doen middels 3 variabelen $dag, $maand en $jaar. Maar hoe kun je zoiets het makkelijkst terugzetten naar een actuele timestamp? En nog belangrijker: Hoe zorg je er vervolgens voor dat de concerten niet al op de dag van het concert zelf al uit de database gemikt worden?

If anyone knows, let me know... :7
kan niet, je hebt namelijk door het opdelen van je datum in 3 vars je timestamp weggeflikkerd. Tenzij je natuurlijk je datum (timestamp) in 1 veld in je db hebt zitten. Overigens vind ik het nooit zo handig als datums worden opgedeeld, juist om de problemen die je nu vind. Als je dus 3 velden in je db gebruikt, en die ga je omzetten naar een date variabelen, zal je altijd de tijd 00:00:00 erbij krijgen. (althans, zo reageerd oracle, waarschijnlijk mysql ook)

<offtopic>
als je bezig bent met cms-en, kijk eens naar www.midgard-project.org, een open source cms, die wat mij betreft erg lekker werkt. Misschien kan je daar wat idee-en opdoen...
</offtopic>

Egoist: A person of low taste, more interested in themselves than in me


Verwijderd

Topicstarter
Misschien is WinCron ook nog wel een mogelijkheid.
Dat is hetzelfde als cron, maar voor windows servers.

Vanavond ga ik die nog even proberen en als dat niet werkt zal het toch handmatig moeten of op een pagina op mijn site.

Verwijderd

Verwijderd schreef op 26 augustus 2002 @ 07:07:
... Met als enige nadeel dat als je een site hebt met behoorlijk wat bezoekers, er bij iedere bezoeker een extra query moet worden uitgevoerd, het lijkt op het eerste gezicht niks maar met 10000 views van je index.php ...
met 10000 views per dag wordt je zowiezow wel uit lycos gezet ...

  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
Als je het lastig vindt om zelf de database regelmatig op te schonen, zou je het als volgt kunnen doen:

1. neem in je select query een where clause op zodat gebruikers alleen de juiste records te zien krijgen (zoals al eerder gezegd)
2. laat met kans 1 op 100 (of 1000 of 10000, afhankelijk van je hits) de database opschonen - dit kan met een random getal (lijkt mij eleganter dan met een externe file):
PHP:
1
2
3
4
if (mt_rand(1, 100) == 1)
{
    deleteOldRecordsFromDatabase();
}

Pas de replâtrage, la structure est pourrie.

Pagina: 1