---
title: "arbeta mot databas, funktion tar en timme??"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/162289-arbeta-mot-databas-funktion-tar-en-timme"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "eddy1"
published: "2007-07-08T06:33:07.000Z"
updated: "2007-07-13T13:54:02.000Z"
replies: 18
views: 881
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/162289-arbeta-mot-databas-funktion-tar-en-timme"
---

# arbeta mot databas, funktion tar en timme??

## #1 — eddy1, 2007-07-08T06:33Z

Hej

undrar lite nu?
om jag läser in ett visst antal poster från en databas. Lopar igenom dessa och för varje post kör jag en funktion som tar minst 5 sek att utföra. Säg nu att det är 100 poster, 500 sek, blir ju nästan 10 minuter.. 

Är databasen helt låst då under 10 min eller kommer andra användare åt den.. 

Finns det något annat sätt att göra detta. hade tänkt att köra det på nätterna men jag kan ju ändå inte låsa upp hela databasen för andra användare??

databasen är MS SQL!

Mvh

Permalänk: https://www.webforum.nu/p/162289

## #2 — Poffe, 2007-07-08T06:39Z

Går inte riktigt att svara på frågan utan att ha mer informationoch kanske lit kodmen spontant:

MS SQL klarar bra mycket mer än 1 ansluing i taget ;). Tänk även på att man inte är ansluten till databasen hela tiden man är på en hemsida (om den inte är riktigt dåligt kodad förstårs) utan bara en bråkdel just då man hämtar eller skriver nått till den.

Är du ändå orolig så kan du hämta ut alla poster du ska använda till en array som du sedan kan loopia igenom och på så sätt ansluter du bara till databasen en gång i nån sekund. Aldrig använt MS SQL men i MySQL heter det GetRows.

Sen i allmänhet så hoppas jag att du stänger databasen ordentigt efter hämtande innan du börjar köra funktioner och liknande så den inte är öppen i onödan.

Permalänk: https://www.webforum.nu/p/2001917

## #3 — Zaiman, 2007-07-08T07:06Z

Att hämta den lilla mängd data tar knappt någon tid alls. Och MS SQL kan som Poffe skriver hantera fler anslutningar samtidigt. Men i princip kodar du så här:

```
1. Öppnar mot Databasen.
2. Hämtar den data du ska.
3. Stänger kopplingen mot databasen.
4. Presenterar den data du hämtade.
```

Vad är det för funktion du ska köra? Ligger den i databasen eller utanför? Du får visa mer kod för att få bättre hjälp.

Permalänk: https://www.webforum.nu/p/2001924

## #4 — eddy1, 2007-07-08T07:07Z

var just det jag tänkte på med att stänga..

hade ju tänkt nåt sånt här...

```
do until rs.eof

con.execute("update set ns="& funktionSomReturneraVärde() &" where id="& rs("id") &")

loop
rs.close
```

nu är det ju bara det att funktion tar 5 sek att köra och det kanke blir 100 till 1000 poster..

finns det något sätt om jag vill ha en fördröjning i min funktion t.ex 10 sek??

Permalänk: https://www.webforum.nu/p/2001925

## #5 — voigtann1, 2007-07-08T07:55Z

förstå inte varför du vill "söla" ner din funktion ännu mer... du kan typ ta for i = 0 to 100000 så blir det en "fördröjning"... men finns inget "wait" liknande i ASP.

Permalänk: https://www.webforum.nu/p/2001928

## #6 — Zaiman, 2007-07-08T08:07Z

Men vänta lite nu...

Din funktion kommer ju att köras först innan din update sats körs. Fördröjningen blir ju så lång som din funktion gör den. Förstår inte vad du vill åstadkomma? Varför vill du ha en fördröjning?

Kan du "måla" upp scenariot om varför du vill ha en fördröjning?

Permalänk: https://www.webforum.nu/p/2001930

## #7 — eddy1, 2007-07-08T09:22Z

Jag loggar besökarna på min sida.. också tänkte jag att på natten ska det köras ett skript som gör en nslookup på varje besök som varit under dagen... 

scriptet för nslookup gör frågan mot ripe men man får väll inte ställa flera frågor för tätt där, så jag vill ha en fördröjning..

sen fanns det en annan lösning och det var att använda en komponent, den komponenten då var en demo och därfär ger den en fördröjning på 5 sek för varje fråga: därav tiden det kommer ta att öra igenom alla poster.. 
Lite jobbigt och då man måste få dom på webhotellet att installera denna komponent..

Permalänk: https://www.webforum.nu/p/2001944

## #8 — Zaiman, 2007-07-08T09:40Z

Då skulla jag nog kolla om jag redan slagit upp adressen tidigare och hämta värdet därifrån innan jag slår upp den igen hos ripe. Varför inte köra det direkt efter inloggning? Då sprider du ut det över tiden. Eller loggar alla in samtidigt?

Har du många slagningar spelar nog inte en 5sekunder fördröjning så stor roll då antalet slagningar förmodligen sätter stopp.

Permalänk: https://www.webforum.nu/p/2001948

## #9 — eddy1, 2007-07-08T10:04Z

jag vill ju inte att det ska skapa någon fördröjning när besökaren kommer till sidan. det är ingen inloggning på sidan utan bara besöksregistrering..

kan du beskriva lite mer hur jag ska gå tilllväga??

om man skulle göra som jag tänkt. ska koden vara som jag har gjort den eller ska jag bara läsa en post köra rs.close och sedan UPDATE och sedan börja om igen med en fråga som tar ut en post??

Permalänk: https://www.webforum.nu/p/2001951

## #10 — Zaiman, 2007-07-08T11:07Z

Hmmm försöker du inte uppfinna hjulet igen nu? 

Har du inte möjlighet att få loggarna från ditt webhotell eller använda tex <http://webstats.motigo.com>
Att logga varje besök genom kod igen känns lite onödigt eftersom den informationen förmodligen loggas av webservern i sig.

Permalänk: https://www.webforum.nu/p/2001967

## #11 — eddy1, 2007-07-08T11:18Z

ähh jag har ju redan gjort det mesta nu.  Nu vill jag bara lägga till denna funktionen också.. Alltså så jag har leverantören och landet i loggen...

men till frågan igen då.. 
vilken kod är bäst eller ingen alls??

```
do until rs.eof
con.execute("update set ns="& funktionSomReturneraVärde() &" where id="& rs("id") &")
loop
rs.close
```

ovan kod då. Är databasen helt låst tills det jag kör rs.close eller kan det fortfarande skrivas till den om det t.ex kommer en beesökare.. Kanske måste ändra script timeout när jag kör detta??

eller ska man köra:

```
SQL......
set rs = execute.....
id= rs("id")
rs.close
con.execute("update set ns="& funktionSomReturneraVärde() &" where id="& id &")
```

och sen loop runt ovanstående, eller inget av ovanstående förslag.. öppen för andra ideer...

Permalänk: https://www.webforum.nu/p/2001976

## #12 — Eclipse, 2007-07-10T16:49Z

Jag vet inte om det är aktuellt för dig, men ett alternativ som kanske passar är att lägga funktionen i global.asa.

SUB Session_OnEnd
\--	session("databasePath") = ""
\--	Application.Lock
\--		application("ActiveUsers")	= application("ActiveUsers") - 1
\--	Application.UnLock
END SUB

Då har du fortfarande all data från användaren, men samtidigt sölar det inte ner "närvarokänslan" för respektive användare. Dom lämnar hemsidan, stänger fönstret eller vad det nu är.

Som sagt, jag vet inte om det skulle fungera i just ditt fall.

Permalänk: https://www.webforum.nu/p/2002575

## #13 — GunnarD, 2007-07-10T18:05Z

Först varför vill du använda ripe's dns servrar, din ISP's servrar fungerar lika bra?

I PHP finns ip-namnet och ip-nummret i variabler som skapas när http anropet görs, finns det inget liknande i ASP som du kan använda och spara direkt i databasen vid anropet?

Permalänk: https://www.webforum.nu/p/2002590

## #14 — jonnyz, 2007-07-12T07:01Z

Du beskriver ju inte vad du gör speciellt ingående men jag hade skapat en tabell där jag lagrade ipadresserna och slog upp dem; på så sätt behöver du inte slå upp samma adress flera gånger.

Permalänk: https://www.webforum.nu/p/2002967

## #15 — eddy1, 2007-07-12T16:05Z

vad jag gör?

Jo jag loggar besökaren när dom kommer till hemsidan, då sparar jag info som, tid,språk, platform m.m. samt ip...

på natten vill jag schemalägga ett script som kollar alla poster som varit under dagen där fältet dns är tomt, är det så så ska det köras en fråga mot ripe för att ta reda på leverantören och landet och spara dessa under dessa fält i databasen.. 

jag vill bara inte att databasen blir helt låst när detta script körs om detta nu skulle ta en timme att köra?? måste ju ändå kunna registrera besök i databsen fast scriptet körs???

jag har inte möjlighet att installera komponent på webhotellet så då var det ju bra med ett script som körde mot ripe..

Permalänk: https://www.webforum.nu/p/2003120

## #16 — Poffe, 2007-07-12T18:08Z

Som sagt, MS SQL klarar mer än en (1) samtidig anslutning så det är inga problem.

Precis som här på wF är det ju inte bara en som kan använda databasen per gång, då skulle man hamna i kö väldigt ofta, ja varje gång som nån laddar en tråd eller sparar ett inlägg eller navigerar bland de olika forumen.

Permalänk: https://www.webforum.nu/p/2003150

## #17 — Troxy, 2007-07-12T18:15Z

Men jag vill påpeka att man är helt fel ute om man skriver ASP-sidor som tar 1 timme att köra igenom.
Som sagt, varför inte utföra denna operation för varje användare direkt när sessionen tar slut?

Permalänk: https://www.webforum.nu/p/2003153

## #18 — eddy1, 2007-07-12T19:56Z

jag har använt mig av session_Onend för att skriva in tid i databsen då besökaren lämnar för att räkna ut besöks tid men tycker inte det verka vara så pålitligt...

´men jag kanske har fel??

sen har ju problemet att man inte kunde ställa frågorna för tätt mot ripe, utan man skulle göra det mot en viss port tror jag det var. Har nte kunnat hittat något om hur man gör det???

Permalänk: https://www.webforum.nu/p/2003190

## #19 — jonnyz, 2007-07-13T13:54Z

Kör du en whois mot ripe eller är det bara en rdns-fråga?
rdns kan du lika gärna ställa till webbhotells namnservrar, det bör gå snabbare

Använd dig av fördelarna med relationsdatabaser. Spara ip i en egen tabell och slå upp från denna så behöver du inte slå upp varje ip mer än en gång.

Permalänk: https://www.webforum.nu/p/2003348

---

Tråden på webben: https://www.webforum.nu/amne/asp/162289-arbeta-mot-databas-funktion-tar-en-timme
