Avatar billede doug Nybegynder
22. januar 2001 - 15:58 Der er 10 kommentarer og
4 løsninger

Mangler en script!! (med domæner)

Jeg bruger alle miner point på en meget svær spørgsmål jeg ikke kan finder ud af!

Jeg vil gerne lave en service-noget, hvor man kan få en oversigt over hvilke domæner i .dk der bliver ledige!!!

Jeg har i denne tabel dem der har tilmeldt sig til listern:

CREATE TABLE dk_abb (
  id int(11) DEFAULT \'0\' NOT NULL auto_increment,
  navn varchar(255),
  email varchar(255),
  PRIMARY KEY (id)
);

De skal hver nat have en e-mail med de domæner der er blevn ledigt!

Jeg vil gerne fylde domænern ind i denne tabel når de bliver ledige!!

CREATE TABLE dk_host (
  id int(11) DEFAULT \'0\' NOT NULL auto_increment,
  domaenenavn varchar(255),
  slettet datetime DEFAULT \'0000-00-00 00:00:00\' NOT NULL,
  PRIMARY KEY (id)
);

Jeg har funnen ud af, at man skal gøre sådan her:::

Første nat bare hente denne fil!!

http://www.dk-hostmaster.dk/domaincount/domains.txt

Næste nat og derefter værd nat, hente samme fil igen, og sammenligne med forrig nat! - og de der mangler i den nye er naturligvis sletted, og skal huskes, og putes ind i databasen jeg tegned ovenfor!!

Så når udsøgningen er færdig skal alle database-domænerne fra denne nat sendes rundt i en e-mail til dem der har tilmeldt sig!!

Jeg håber nogen forstår det!!

PHP-filen bliver kaldt hver eneste time, men skal KUN få lov til at køre færdig, når der er gået en dag siden sidst, og klokken er mellem 3 og 5 om natten!!! - ELLERS SKAL DEN AFBRYDE!!

(Du må bruge denne database til at gemme hvornår nu sidste kørsel var - VIGTIGT!! DEN MÅ KUN KØRE ÉN GANG (hver nat) - da det er en kæmper fil)

CREATE TABLE dk_sidst (
  id int(11) DEFAULT \'0\' NOT NULL,
  sidst datetime,
  PRIMARY KEY (id)
);

Ud over point må du gerne kommer med på listen og få domæenern at vide HVER NAT hvis du kan hjælpe!!!!

Alle tabeller er i MYsqL!!
Avatar billede defrost Nybegynder
22. januar 2001 - 16:57 #1
Jeg har desværre ikke tid til at lave det selv, men jeg kan da give nogle tips, hvis der er en, der vil forsøge sig (og tjene nogle point):

1) Opret en tabel ved navn host. Den behøver kun at indeholde et enkelt felt nemlig hostnavn.

2) Indlæs tekstfilen i denne tabel. Dvs indlæs filen i et array med readline. Fjern evt newline. Loop gennem array\'et og indsæt hver linie i en post i databasen. Hvis dette er for langsomt kan man kalde mysqlimport istedet.

3) Næste nat gør man det samme, men indsætter filen i tmp_host. Denne tabel skal være magen til host.

4) Udfør følgende sql. select host.* from host left join tmp_host on host.hostnavn = tmp_host.hostnavn where tmp_host.hostnavn is null; Resultatet er denne query er alle de hostnavne, der er blevet slettet.

5) Send en mail til alle dem, der har tilmeldt sig indeholdende alle poster fra foregående query.

6) Kør følgende sql drop table host; alter table tmp_host rename host;

7) goto 3 :)

Så mangler der bare et check for om det er 1 døgn siden at scriptet blev kørt sidst og om kl er mellem 3 og 5 om natten. Det burde der ikke være de store problemer i. Gem datoen inden pkt 3. Når scriptet så startet kontrolleres bare om den dato er 1 før nuværende dato. Derefter testes tidspunktet. Det kan gøres med date(\"G\"). Hvis den ikke returnere 3 eller 4, så die();

Håber, at der er en, der har tid til at implementere dette. Det skulle være lige til. :)
Avatar billede andreas Nybegynder
22. januar 2001 - 17:49 #2
jeg ville nok bruge en cron job til at udfører alt dette...
Avatar billede defrost Nybegynder
22. januar 2001 - 18:02 #3
Det står der skam heller ikke, at man ikke skal. Man kan da sagtens smide et php script ind i cron...
Avatar billede andreas Nybegynder
22. januar 2001 - 18:06 #4
ja, men ellers kræver det at der er en der åbner php siden kl lort om natten jo...
Avatar billede doug Nybegynder
22. januar 2001 - 22:38 #5
defrost!!! Det ser riktig godt ud - er sikker på nogen kan bruger det som inspirtion!!

andreas!!!Jeg brur netwhistle og webalert til at hente siden to gang i timern - det gør de gratis!!! - Men når jeg får min egn surfer skift jeg til en cron-noget naturligvis!!!! (Hvis det bliver linux!!!)

Men ignorer det bare indtil vider, hvordan den skal hentes - den må bare kun køre én gang!!! (HVER NAT)

Andre der har bud på nogen andre ting jeg spørger?? Fx det med én gang - forstår ikke helt hvad du mener med date(\"G\"), defrost!!!

Jeg arbejdr lit med det og skriver noget kode her når jeg har noget der virker eller giver små problemer!!
Avatar billede defrost Nybegynder
22. januar 2001 - 22:44 #6
Tag et kig på http://www.php.net/date

Kort fortalt, så hvis du kører:

$tid = date(\"G\");

vil $tid indeholde timen på det nuværende tidspunkt. Pt vil den altså indeholde 22 (Hvis du læser denne tekst ret snart, selvf.)

Avatar billede doug Nybegynder
22. januar 2001 - 23:22 #7
Jamen!! Hva nu hvis scriptet bliver kaldt to gange mellem 3 og 4!! det må KUN køres en gang - selv om siden bliver bedt om to ganger med ét minuts melemrum - det er ONE go!!

Er det så godt nok???
Avatar billede defrost Nybegynder
22. januar 2001 - 23:28 #8
Det er derfor, at du skal gemme datoen i mysqldatabasen.

Scenario.

Scriptet bliver kørt første gang idag kl 03.15.

databasen checkes. Der er ikke blevet kørt før. OK.
date(\"G\") checkes. Klokken er 3. Det er ok.
I mysqlbasen gemmes 22-01-2001.

Scriptet kaldes igen idag kl 03.45:
databasen checkes. Der står 22-01-2001. Det er IKKE ok. Afbryd.

Scriptet køres imorgen kl 03.45:
Databasen checkes. Der står 22-01-2001. Det er ok. Det var igår (set fra imorgen)
date(\"G\") kaldes. Klokken er 3. OK
I basen gemmes 23-01-2001.

Håber det klarer tingene lidt op.

Avatar billede steffen Nybegynder
23. januar 2001 - 07:40 #9
Her er 25 øre mere:

Du kan yderligere bruge et semafor for at beskytte dig 100%:

$sem = sem_get(4, 1); // Hent et semafor med id 4
sem_acquire($sem); // Beskyt denne sektion
  // Check at klokken er mellem 3 og 5
  // Check at databasedato er igår
  // Hvis ja -> Overskriv databasedato med idag og gå igang - kald do_it() eller hvad din funktione hedder
  // Hvis nej -> Ingenting;
sem_release(); // Nu må andre bruge sektionen igen.

Det er en klassisk metode.
Avatar billede steffen Nybegynder
23. januar 2001 - 07:43 #10
Ups, sem_release($sem);, naturligvis
Avatar billede bacardil Nybegynder
23. januar 2001 - 07:46 #11
Tilmeld dig her, der får du dagligt en mail med nye reg. domæner

Ændringer i .dk zonen sendes ud på hverdage kl. 17.30, ikke i weekenden.

tilmelding til:
dotdknews-subscribe@dataweb.dk
Avatar billede bacardil Nybegynder
23. januar 2001 - 07:50 #12
Hmm.. så ikke helt spm.

Der stå også ophørte domæner, men det grundlægende, er at du kan benytte samme metode som dem, og selv lave denne service
Avatar billede ckrame Nybegynder
26. januar 2001 - 14:56 #13
du skal ikke lytte til steffen.
semafor\'er er noget rod at arbejde med - du skulle hellere prøve at benytte en thread istedet de er meget mere stabile og nemmere at styre.
Avatar billede steffen Nybegynder
26. januar 2001 - 16:35 #14
(Høhø!)

I virkeligheden indså jeg straks at en dobbbeltinverteret messer-schmidt-bro med en postthyristor-kobling bygget over et doze-pattern ville have løst problemet med det samme ..

Men man skal jo heller ikke kaste guld for slaverne altid :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester