[php] gegevens / bericht pushen naar gebruikers

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor ons bedrijf heb ik een online systeem gemaakt, waarin klantgegevens en contracten worden opgeslagen en onderhouden. Aan de hand van de contracten worden er omzetstaten gegenereerd.
Nu het systeem wat langer in gebruik is en door meerdere vestigingen worden gebruikt via Internet neemt het aanmaken van omzetstaten wat meer tijd in beslag.
Er wordt namelijk niet alleen naar de lopende contracten gekeken, maar ook naar de historie van omzetstaten. Daarbij zijn er ook nog ingewikkelde en samengestelde omzetstaten met veel berekeningen.

Al met al kost het meer tijd om een omzetstaat aan te maken en neemt dit dus ook geheugen in beslag op de server.

Om te voorkomen dat de server / database / systeem crasht wil ik hier een oplossing voor verzinnen.
Ik heb programmeertechnisch al het een en ander verbeterd (mysql query optimalisatie en php geheugengebruik geoptimaliseer binnen de verschillende scripts / functies en classes): kostte het eerst ca 5 a 8 seconden om een zeer ingewikkelde omzetstaat aan te maken, nu kost dat nog 1 a 2 seconden.

Een hele verbetering dus, maar ook dit zal op den duur wat langer gaan duren.

Daarom zit ik aan iets anders te denken:
Geef het systeem gewoon de tijd om een omzetstaat aan te maken (in een later stadium zullen er programmeer- en hardware technisch nog wel optimalisaties komen), maar zorg voor een soort mededeling dat er een omzetstaat wordt aangemaakt aan alle gebruikers, zodat men even kan wachten met het zelf aanmaken van een omzetstaat.

Ik zat te denken aan een RSS feed:
Dus op iedere PC een RSS reader draaien.
Maar nadeel is dan dat die RSS feed elke 5 seconden zou moeten controleren (of zelfs nog een kleiner interval) of er een staat wordt aangemaakt --> kost ook veel database connecties en performance.

Dus wellicht valt er ook iets te doen met een soort RSS feed, maar dan anders (wellicht is het er gewoon maar dat weet ik dan niet): als een omzetstaat aangemaakt wordt, moet er een berichtje gepushed worden naar de RSS reader.

Weet iemand wellicht hoe ik dit voor elkaar kan krijgen?
Of heeft iemand andere ideeën over hoe ik gegevens naar de gebruikers zou kunnen pushen.
Mooiste zou zelfs zijn als men een pop-up krijgt (en die automatisch verdwijnt als de staat gereed is), maar alleen als diegene het systeem open heeft of ingelogd is.

Het systeem werkt overigens op PHP 4 en MySQL 4.01

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ik heb 1 algemene vraag omtrent:
Om te voorkomen dat de server / database / systeem crasht wil ik hier een oplossing voor verzinnen.
Waarom verwacht je dit... Als het systeem dusdanig druk wordt dat het niet meer te behelsen is op 1 systeem, dan moet misschien aan uitbreiding denken.

Om hoeveel transacties / postbacks / users tegelijkertijd op het systeem gaat het eigenlijk?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 19:08

BCC

Dat kan wel, maar dan kun je het beste een aparte tabel (tabel B ) maken die je adh van een cron job om de 5 minuten vult met de benodigde gegevens. Je RSS feeder leest uit Tabel B. Als er iets veranderd, merken de client readers dat en voila..

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Per vestiging wordt nu voor hetzelfde systeem een andere database gebruikt.
Dus gegevens en script zijn gescheiden.

Hoeveel transacties: alleen tijdens het aanmaken kost het een paar seconden veel werk om een staat aan te maken. Dat zal ca. per vestiging 5x per dag zijn.

Echt bang om te crashen ben ik niet hoor :) Vergeet dat maar even:
eigenlijk wil ik gewoon zon mededeling aan de gebruiker kunnen doen.

Tis nu meer fancy dan zinvol :)

@BCC:

5 minuten is een veel te grote interval.
Dit moet echt bijna om de seconde zijn.
En denk dat dat meer voor belasting zorgt dan het aanmaken van de staat zelf.


Omdat bijna iedereen (ik zorg er dan wel voor dat iedereen MSN gaat gebruiken of ICQ) MSN heeft, kan ik natuurlijk ook een berichtje op hun MSN account posten?!

[ Voor 29% gewijzigd door Verwijderd op 24-03-2005 10:33 ]


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 19:08

BCC

Verwijderd schreef op donderdag 24 maart 2005 @ 10:28:
5 minuten is een veel te grote interval.
En denk dat dat meer voor belasting zorgt dan het aanmaken van de staat zelf.
Sorry ik las je TS verkeerd.
Geef het systeem gewoon de tijd om een omzetstaat aan te maken (in een later stadium zullen er programmeer- en hardware technisch nog wel optimalisaties komen), maar zorg voor een soort mededeling dat er een omzetstaat wordt aangemaakt aan alle gebruikers, zodat men even kan wachten met het zelf aanmaken van een omzetstaat.
Je kan toch gewoon een regel inserten in een tabel met "er wordt nu een staat gegenereerd" als iemand dit doet en deze tabel uitlezen met een RSS feeder? Zo'n select * elke paar seconden zal er qua performance niet echt inhakken. Zoiets pushen is niet eenvoudig mogelijk. Je zou natuurlijk een linuxscriptje kunnen schrijven dat naar alle mensen een berichtje stuurt, of aan icq/msn knopen of iets dergelijks, maar via een RSS feeder zal dit niet kunnen.

[ Voor 87% gewijzigd door BCC op 24-03-2005 10:44 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Vergeet niet dat PHP alleen wordt uitgevoerd op het moment dat het wordt aangeroepen. Het is niet een object wat atlijd in het geheugen van de server blijft leven. Dus je zult altijd via via moeten doen, zoals bijvoorbeeld een cronjob (voor unix-systemen en taakplanner voor windows) welke je gegevens kunt laten versturen naar al je clients. Dan heb je wel weer een programma/service nodig welke kan reageren op de requests van de cronjob. Dat programma/service kan bijvoorbeeld dan tevoorschijnkomen en op die manier de user attend maken.

Maar misschien is mijn idee wel erg omslachtig voor jouw probleem.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het aanmaken van een omzetstaat vindt plaats op commando van de gebruiker:
dus er wordt een actie getriggerd.

Voorafgaande aan die actie zou ik dus een bericht kunnen posten / status aanpassen oid.
MSN is wel leuk natuurlijk, maar dat is slechts de uiterste optie, omdat het bedrijf natuurlijk liever niet heeft dat iedereen zit te chatten onder het werk.

Nog makkelijker is gewoon om de aanmaak-knop te disablen zodra een omzetstaat wordt aangemaakt.
Maar dan heb je weer het probleem: wat als men al in die lijst zit met ongemaakte omzetstaten en de knop al enabled is. Als iemand anders dan een staat aan gaat maken, kan die ander ook nog steeds aan gaan maken :) ...

Wacht, ik heb de oplossing:
tijdens het aanmaken van de omzetstaat eerst controleren of er een andere wordt aangemaakt.
Wordt er 1 aangemaakt: dan een popup met mededeling en annuleren en terug naar het overzicht.

Fok, soms kan het zo simpel zijn :)

[ Voor 45% gewijzigd door Verwijderd op 24-03-2005 10:46 ]


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 19:08

BCC

En als nou op de één of andere reden staat niet volledig gegenereerd wordt? Dan zit je systeem dus vast... en je hebt dus besloten om maar niet te pushen? Dan was dit topic ook een beetje zinloos :|

[ Voor 105% gewijzigd door BCC op 24-03-2005 10:51 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mmm, daar noem je iets idd ...
Ik heb nog niets besloten hoor.
Maar het is een tijdelijke oplossing tot er iets beters komt :)
Dus de discussie blijft lopen wat mij betreft

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 19:08

BCC

Zorg dan iig dat het systeem na x seconden zichzelf vrijgeeft. Dus, store start in een tabel als je statistieken gaat genereren. En je mag pas weer statistieken genereren als OF er een stopcode in de tabel staat, OF de startcode meer dan 20 seconden geleden was.

Verder is er niet echt discussie mogelijk. Je kan niet Pushen naar een RSS client zoals jij dat wil. Dan moet je andere software gebruiken, zoals messengers/NET SEND of zelf een stukje software schrijven. Een pop-up maken is niet echt heel moeilijk..

[ Voor 42% gewijzigd door BCC op 24-03-2005 15:41 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Een pop-up waarin? :) In de site?
Die site moet dan wel continue 'luisteren'.
Die stop-code en tijdslimiet is een goeie idd.

MSN is helaas geen optie.
Zijn er niet system-tray progs waar je een berichtje naar kunt pushen?!

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 19:08

BCC

Verwijderd schreef op donderdag 24 maart 2005 @ 15:43:
Een pop-up waarin? :) In de site?
Die site moet dan wel continue 'luisteren'.
Die stop-code en tijdslimiet is een goeie idd.

MSN is helaas geen optie.
Zijn er niet system-tray progs waar je een berichtje naar kunt pushen?!
zelf een stukje software schrijven. Een pop-up maken is niet echt heel moeilijk..
In Java/C# oid bedoelde ik..

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • doak
  • Registratie: Oktober 2001
  • Niet online
Doe dan gewoon een simpele netsend ben je er toch ook?

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
doak schreef op vrijdag 01 april 2005 @ 16:20:
Doe dan gewoon een simpele netsend ben je er toch ook?
Ter informatie: ook vanaf een Linux-server kun je netsenden met Samba met het volgende commando:


code:
1
smbclient -U AfzenderNaam -M 192.168.0.2 | echo bericht oid...


offtopic:
De -U AfzenderNaam doet het altijd erg goed op school, waar we sindskort een Linux-intranet server hebben >:)
Pagina: 1