Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: mysql :stä poisto tietyssä tapauksessa

Sivun loppuun

v0q [06.10.2004 22:59:29]

#

Elikkä siis... jos tekisin vaikka blacklistin ( vaan esimerkki )... johon laittasin esim bannatun ip, aika millon bannatta (vuosi-kuukaus-päivä kellonaika) ja syy minkä takia bannattu... Niin miten saisin sen silleen että siitä kohtaa kun se bannataan... esim. IP - 127.0.0.1 bannataan 6.10.2004 klo 22.00 ja syytä ei ole... niin se poistaa sen 24h tunnin kuluttua eli 7.10.2004 klo 22.00 jos syytä ei oo asetettu... enpä tiiä voiko tällästä tehä mutta ajattelin että tekisin sellasen rekisteröitymis jutun missä tarttee aktivoida tunnus ( minkä osaan tehdä ) niin jos sitä ei aktivoi 24h (1pv :n) sisällä niin se poistaa sen sieltä mysql :stä :) Toivottavasti nyt tajusitte tän...

ajv [06.10.2004 23:23:56]

#

Yksinkertaisimmin tuo menee unixissa crontabilla ja windowsissa schedulerilla + yhdellä SQL-kyselyllä, joka poistaa kannasta kaikki päivän vanhemmat tiedot, joita ei ole aktivoitu. Siis kutakuinkin tähän tyyliin:

DELETE FROM tunnukset WHERE (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(rekkaus_aika)) > 86400 AND activated = 0;

Olettaen, että sinulla on rekisteröimisaika myslin timestamppina kannassa. Mitään omia päivämäärämuotoja ei kannata käyttää, niistä ei ole kuin harmia.

Siihen en sitten ota kantaa kuinka järkevää tuo on.

v0q [06.10.2004 23:32:32]

#

Siis mysql :ssä on aika DATETIME :na eli kai se se myslin timestamppi on :) tyyliin 2004-10-06 24:44:33 tj. :) Kiitos tuosta... kokeilen huomenna...

ajv [06.10.2004 23:38:52]

#

v0q kirjoitti:

Siis mysql :ssä on aika DATETIME :na eli kai se se myslin timestamppi on :)

Kyllä, kyllä on :)

v0q [06.10.2004 23:59:09]

#

Joo... :P En vaan ollu varma kun eikös mysql ole TIMESTAMP erikseen ? :E eli siis kumpaas tarkotit ?

ajv [07.10.2004 16:15:52]

#

No kumpikin käy, TIMESTAMP ja DATETIME. TIMESTAMP on muotoa 20041007162000 ja DATETIME 2004-10-07 16:20:00. Tuo TIMESTAMP on muistaakseni jonkun standardin mukainen 'virallinen' aikaleima ja sitä olen itse käyttänyt.

v0q [07.10.2004 19:28:38]

#

Okei taidan kohta kokeilla... Muuten kun mainitsit tuon windows schedulsen ja crontabin... Jos kokeilen EasyPHP :n avulla eli http://localhost/ osotteessa niin mitäs täytyy tonne windows schedulsee tehä vai tarviiko tehä mitää ? :)

ajv [07.10.2004 20:46:45]

#

Pitäisihän tuon myslin hallinan onnistua ihan komentoriviltäkin, mutta kun ei ole hajua miten se toimii & en just nyt jaksa kokeilla, niin neuvon tekemään esim. php tiedoston, joka ottaa yhteyden mysliin, tekee tarvittavat kyselyt ja sulkee yhteyden.

Sitten teet jonkun foo.bat tiedoston, jonka laitat ajamaan php-scriptisi. bat-tiedosto on balttiarallaa tämännäköinen:

C:\php\php.exe x:\path\to\your\php_script_file.php

Sitten laitat vaan Windowsin Schedulerin suorittamaan bat-tiedoston tarvittavan usein.

Mutta: minulla on paha taipumus tehdä kaikki vaikeimman kautta, eli viisaammat neuvokoot, jos tuo onnistuu helpommin.

Edit: typot

v0q [08.10.2004 12:17:35]

#

Hmm kokeilin tuota... foo.bat heitti erroria jostain mysql funktioista ettei oo tunnistettuja funktioita... No päättelin tästä että johtuu siitä kun ei ole mysql ladattuna... Eli siis lisäsin tohon sitte rivin mikä käynnistää mysql.exe :n ja kokeilin myös mysqld.exe :llä mutta tällästä virhettä heittää...

Parse error: syntax error, unexpected T_STRING in c:\path\mysql\mysql.exe on line 1121

Eli mites vois korjata ? Pitääkö ajaa apache mukaan ?

arcatan [08.10.2004 12:24:52]

#

v0q kirjoitti:

Parse error: syntax error, unexpected T_STRING in c:\path\mysql\mysql.exe on line 1121

Et kai nyt sentään mysql.exeä PHP:lla yritä ajaa? Eli siis, sinulla täytyy ensinnäkin olla se MySQL-serveri päällä, mitä ei kannata käynistää bat-tiedostosta, vaan se varmaan käynistyy ihan itsestään. Joka tapuksessa veikkaan, että sinulla ei ole MySQLia ladattunana PHP:ssa. Eli tarkistappa, että php.inistä löytyy seuraava rivi ilman ;-merkkiä edessä:

extension=php_mysql.dll

v0q [08.10.2004 12:53:56]

#

Note that MySQL and ODBC support is now built in, so no dll is needed for it.

Tollanen tossa niitten extension juttujen edellä... ja kyllä oli ; sen edessä... mutta onko php_msql tai php_mssql sama ku php_mysql ? Eli tarkotitko jompaa kumpaa ?

ja miten saisin sen toimii jos tän hetkinen .bat tiedosto on :

"C:\Program Files\EasyPHP1-7\php\php.exe" "C:\Program Files\EasyPHP1-7\www\site\register_delete.php"

ajv [08.10.2004 13:12:41]

#

Koitappa saada nyt ensiksi se mysli kuntoon. Manuaalista esimerkki:

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
   die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

Sitten kun tuo toimii, alat rukata sitä bat-tiedostoa, mikä kylläkin näyttää olevan ihan kunnossa.

Edit: Niin ja itelläkin on kyllä php.inissä tuossa kommenttimerkki (;) tuon
extension=php_mysql.dll
edessä, että ei vika välttämättä siinä ole. Käynnistät sen myslin ihan manuaalisesti vain windowsista. Etsit tiedoston mysql.exe ja kaksoisklikkaat sitä :) Sen jälkeen mysli on päällä, eikä sammu, ellet sitä sammuta.

v0q [08.10.2004 14:27:23]

#

Siis... Kun se toimii ihan oikein se register_delete.php jos avaan sen tälläsestä : http://localhost/register_delete.php mutta noita erroreita se heittää vaan kun yritän ajaa tuon foo.bat :n mitä en nyt ole saanut kunnolla toimaan...

ajv [08.10.2004 15:28:29]

#

Mitähän erroreita se tarkalleen ottaen heittää?

v0q [08.10.2004 15:35:54]

#

Jos vaikka .bat tiedosto on :

"C:\Program Files\EasyPHP1-7\php\php.exe" "C:\Program Files\EasyPHP1-7\www\site\register_delete.php"

niin erroriks tulee :

Fatal error: Call to undefined function mysql_connect() in C:\Program Files\EasyPHP1-7\www\site\register_delete.php on line 2

ja jos muokkaan .bat filua tälläseks :

"C:\Program Files\EasyPHP1-7\mysql\bin\mysql.exe"
"C:\Program Files\EasyPHP1-7\php\php.exe" "C:\Program Files\EasyPHP1-7\www\site\register_delete.php"

virheeks tulee :

ERROR 1045: Access denied for user: 'ODBC@localhost' (Using password: NO)

ja sen jälkeen taas toi sama function juttu...
ja jos isken noi samalle riville ( mysql.exe ja php.exe ja register_delete.php ) heittääpi jostain T_STRING :stä

ajv [08.10.2004 15:56:28]

#

Ei sinne bat-tiedostoon mitään myslin käynnistyksiä. Se on todennäköisesti jo päällä, eikä ongelma siinä ole.
Ja PHP:n versio on 5.x? Siinä käsittääkseni mysli ei ole valmiiksi conffattuna. Vrt. tämä keskustelu. Uskomattomalta kuulostaa, että ajettaessa php-scripti apachen tms. kautta se toimisi, mutta kun komentoriviltä ajaa, niin ei toimisi.

Edit: tän dialogin vois siirtää vaikka irkkiin tai meseen :)

v0q [08.10.2004 16:00:56]

#

4.3.3 :a näyttää toi... Kun käytän tota EasyPHP :ta... enkä tiedä miten onnistuisin siinä päivittään ton php :n :/ kun ei tainnu toimia jos asensin sen vaa sen vanhan päälle muistaakseni kun kerran kokeilin...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta