Avatar billede Slettet bruger
09. januar 2015 - 10:56 Der er 8 kommentarer og
1 løsning

Er der noget nyt...

Jeg søger en metode hvormed en bunke browsere kan "slå op" på PHP-serveren,
og se om det er kommet noget nyt indenfor et "emne" - Fx. i en chat eller live-blog.

Altså hvor tusinder af browsere, med korte mellemrum, spørger: Noget nyt om XYZ ?
- UDEN at lægge serveren ned i de 99,99% tilfælde hvor der intet nyt er.

De to metoder jeg kender:
A. Slå op i databasen: select last_modified from nyt where emne=XYZ
B. Returnér indholdet af text-filen "XYZ" (indholder last_modified)

Det jeg helst ville have:
- $_nyt_['XYZ'] (=last_modified) ligger klar i RAM = slet ingen disk-access!

Nogen idéer ?
- eller, hvis ikke, om metode A eller B er bedst (eller der findes noget hurtigere) ?
Avatar billede keysersoze Guru
09. januar 2015 - 11:33 #1
Kig på signalr - med det kan du pushe nyt ud i det øjeblik det postes.
Avatar billede olsensweb.dk Ekspert
09. januar 2015 - 14:26 #2
Avatar billede arne_v Ekspert
09. januar 2015 - 16:16 #3
Der er flere aspekter af dette.

1) Undgaa at applikationen tilgaar databasen/diskfil for hver request.

Det kraever en cache.

Er det ikke et krav at din applikation skal kunne skalere horizontalt og du ikke bruger PHP, saa er det nemt.

For PHP skal du have fat i en en extension som kan cache mellem requests.

For horizontal skalering skal du have en cluster wide cache eller din business logic skal kunne leve mere flere separate caches.

Fil vil formentligt vaere lidt hurtigere end database. Men filer er igen problematiske for horizontal skalering. Fil adgang over netvaerk er naturligvis muligt, men det er langsomt og saa vil database nok vaere hurtigst.

2) Hvilken form for requests vil belaste serveren mindst.

Helt primitiv poll er nemt at implementere, men er dyrt i performance.

Long poll (ogsaa kendt som Comet style) er mindre resource kraevende, *hvis* server side kan haandtere det smart. For PHP vil det igen kraeve en speciel extension.

Web sockets er true push og derfor optimalt performance maessigt. Men der er problemer med support i gamle browsere. Der kan vaere firewall problemer. Og igen vil det kraeve en extension til PHP.
Avatar billede Slettet bruger
09. januar 2015 - 16:30 #4
Ja "desværre kun" PHP her. SignalR (som ellers lyder helt rigtigt)
er vist en ASP <-> iE (sikkerhed i morgen) teknologi ?
- Men princippet bagved, er vel (også) direkte socket-snak ?


WebSocket med socket.io ovenpå (edderhylme avanceret!)
lyder helt rigtigt - efter 3 minutters "research" : )

Mange tak - Har du brugt det selv ?
- er det virkelig så ukompliceret som David Walsh skriver ?
Avatar billede Slettet bruger
09. januar 2015 - 16:49 #5
Hm... øv.
- Ægte push fra PHP til browser kræver "skruetrækker-adgang" til serveren (?)
Det har jeg ikke - ligger på et lille virtuelt hjørne (hos Servage.net)

Kan PHP virkelig ikke (op)rette en streng i RAM på serveren.
- som kan læses af en anden PHP-tråd (hvis den kender navnet) ?
Avatar billede arne_v Ekspert
09. januar 2015 - 16:54 #6
Avatar billede Slettet bruger
10. januar 2015 - 08:39 #7
Ja, virker lidt dubiøst..

Der findes faktisk sådan en fælles-RAM-feature i PHP: Shared Memory.
- men det er en extension - som ikke er enablet i Servage.net's PHP
Suk.

Takker for hjælpen - det blev jeg klogere af : )

PS
Det er nogen tid siden, jeg var her sidst..
- er point-systemet noget vi går op i (SKAL jeg udpege en VINDER) ?
Avatar billede olsensweb.dk Ekspert
10. januar 2015 - 13:02 #8
jeg springer point over
Avatar billede arne_v Ekspert
11. januar 2015 - 01:30 #9
Umiddelbart synes jeg at det var ganske fair med en deling.

Og svar fra mig.
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