16. april 2004 - 22:43Der er
36 kommentarer og 4 løsninger
Tælle aktive bruger fra flere domains
Jeg har et domain køre php+mysql og et der køre asp+mssql nu skal jeg så have vist på begge hvormange aktive bruger der er på de 2 domains tilsammen. altså hvis der er 30 online på det ene og 50 på det andet skal den på begge skive 80. Hvordan klarer jeg den nemmest? Gode ideer
nemlig, det er samme princip som chart benytter sig af, blot at det i deres tilfælde er en database adgang som kombineres med et billedkomponent, men den tager vi en anden god gang :)
jo, det gør du, men det vil den jo under alle omstændigheder..
Når man kommunikerer mellem to servere, vil den ene være påvirket af den anden og omvendt.. ergo, går den ene ned, vil kommunikation mellem de to servere hænge som en død tråd.
Jeg tror din eneste udvej er at kombinere server-side med client-side, det kan måske endda også vise sig at være en fordel i et worst case scenario (hvis den ene server går ned), men det ved jeg ikke helt præcist..
okay, godt... jeg smider et svar så.. du bestemmer fuldstændig selv om jeg skal have alle pointene eftersom jeg ikke rigtig kom med nogen form for kode eller andet end ord..
hmm det er vel slet ikke nødvendigt med en database, jeg vil tværtimod påstå det er dumt at bruge en database for at lagre antal online brugere....
det nemmeste er at du på begge server laver en asp/php fil med en javascript variabel der indeholder det antal brugere der er i den pågældende server. Herefter skal du bare have fat i det tal fra den anden server og plusse dem sammen (det samme skal du også gøre fra den anden server)... Nemt og enkelt
fx. laver du en fil i asp serveren der ser således ud: serverASP/counter.asp ---------------------- <% response.write "var online_users_ASP = " & Application("onlineusers") & ";" %>
her efter skal du bare hente den data fra din php server, fx.
serverPHP/onlinebrugere.html <hmtl> <script src="serverASP/counter.asp"></script> <script language="JavaScript"> var online_users_PHP = <?=echo(php tæller funktinen)?>; var total_online_users = parseInt(online_users_ASP) + parseInt(online_users_PHP); document.write(total_online_users); </script> Du kunne også bruge layers(div) med innerHTML </html>
Du kunne også bruge layers(div) med innerHTML = En anden måde at udskrive dataen på. Du får også lige et eksempel på det
serverPHP/onlinebrugere.html <hmtl> <script src="serverASP/counter.asp"></script> <script language="JavaScript"> var online_users_PHP = <?=echo(php tæller funktinen)?>; var total_online_users = parseInt(online_users_ASP) + parseInt(online_users_PHP); document.getElementById("onlinebrugere").innerHTML = total_online_users; </script> Lige nu er der <b><span id="onlinebrugere"></span></b> online brugere på begge mine servere..! </html>
Spørgsmålet er så bare om man kan bruge applikations over to domæner ???
Jeg ved ikke om man bliver talt fra applikation, når man forlader siden igen, når det er på et andet domæne.. derfor er en databaseløsning måske optimal.
nej du er helt galt på den <master-d>... Her er min ide: Du laver en tælle-funktioner på hvert af disse servere, uafhængig af hinnanden.! Her efter poster du den værdi fra fx. serverASP over i en javascript variabel (javascript variablen bliver altså dynamisk!).
I serverPHP henter du denne javascript variabel, plusser det tal i den variabel, med den tælle_funktions_variabel i serverPHP og gemmer det som en variabel: Og nu har du det samlede online brugere tal fra begge servere!
så lang så godt nu står der så 1 på to af mine asp domains forskellige servere så skal jeg bare have lagt den sammen, så tager jeg lige php med bagefter
likedon: du behøver ikke at lave selve tælle funktionen selv.! Der findes utallelig mange gratis på nettet. kig fx her: www.activedeveloper.dk www.asp.dk
Nå, men jeg smutter nu.. jeg vil også selv have noget ud af natten, så jeg sætter mig til at udvikle på et af mine egne projekter. Så likedon, du må spørge punnishment hvis der er behov for hjælp, lader til at han har styr på det..
har et problem, tror det er min asa der skal laves noget i, den server jeg hvor jeg henter variblerne ind med tæller op på fjernserveren ved f5 se her: http://www.powertolift.com/00/default.asp
hvad går galt? min asa ser sådan her ud: <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Application_OnStart ' starter fra 0 Application("ActiveUsers") = 0 End Sub
Sub Session_OnStart ' så er timeout'en på en session 20 minutter - kan ændres... Session.Timeout = 1 Session("Start") = Now Application.Lock Application("ActiveUsers") = Application("ActiveUsers") + 1 Application.UnLock End Sub
Sub Session_OnEnd Application.Lock Application("ActiveUsers") = Application("ActiveUsers") - 1 Application.UnLock End Sub </SCRIPT>
manges erfaring siger at det ikke er godt at bruge global.asa til tællefunktion, da session_OnEnd ikke altid bliver afviklet - men du kan læse mere om det i det ovenstående link
ja, eller en tekstfil. Jeg kan ikke lige komme op med en løsning som kører uden det, da sessions og applikations ikke kører over flere domæner samtidigt..
Jeg prøver lige at se om jeg ikke kan hitte på noget smart.
min tæller i hvertfald ikke hvergang jeg refresher. Men det lyder rigtigt nok at pga. du kalder en side fra den anden server, opfatter den anden server det kald som et nyt besøgende: Det gør den fordi global.asa holder styr over ALLE filer i hele serveren (smart, men ikke brugbart i vores tilfælde!)
Løsningen på dette problem er simpelthen at droppe global.asa, og lave din egen taellefunktion.asp som du inkludere øverst i ALLE dine sider på den pågældende server.
Jeg vil klart anbefale denne løsning frem for database-løsningen.!
her en artikel der giver lidt hjælp på vejen, til at udvikle counter uden brug af global.asa Du skal dog selv forbedre den. Oprydning er den vigtigste funktion der mangler i den artikel
Her er lige en tilføjelse til det seneste foreslag: Du skal selvfølgelig ikke inkludere den taellefunktion.asp fil i den fil med javascript variablet.!
når du så henter den variabel fra den anden server - bliver det kald ikke opfattet som en bruger!
jeg har droppet at tælle op fra 2 server på samme tid, så lukker sp i deler ok
Synes godt om
Ny brugerNybegynder
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.