webForumDet fria alternativet

Egen webservice (förslag på lösning sökes)

PHP

10 svar · 586 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Hej,

Vi ska tillhandahålla viss information till tredjepart via webben.
Det funkar så att vi tar emot info via ett XML flöde och det här flödet ska vi sen dela vidare.

Tanken med att tredjepart måste "gå genom oss" är att tredjepart inte ska få tillgång till vår källa.

Jag vill nu få tips på hur jag ska lösa det här.
Min tanke är att var 10 minut (det är ungefär så ofta som flödet till "oss" uppdateras) mellanlagra informationen i en databas.

När tredjepart sedan anropar "mitt" xmlflöde ska det kollas hur gammal infon i databasen är, är den > 10 minuter gammal ska "min källa" anropas och datan förnyas innan "mitt flöde" skrivs ut.

Hur löser man det här på snyggast sätt? Jag har kollat lite på att bygga en webbservice, men det känns lite overkill, eller?

Tacksam för tips på olika lösningar!

Medlem sedan mars 20007 896 inlägg
#2

Kolla på informationen kring cache-funktionalitet i mitt inlägg här. Så löser du det på snyggaste sätt, dock så garanterar det ju inte att informationen är helt färskt. Om det feed som ni hämtar information från uppdateras strax efter att en ny cache-fil har skapats, så förlorar ni ju nästan 10 minuters information. Är inte det hela världen, bör ni cacha datan. Och du kan använda cache med webservice också.

Medlem sedan feb. 20041 816 inlägg
#3

Ni borde absolut göra en wrapper runt källan. Skulle ni behöva byta leverantör eller om deras format ändras i framtiden är det onödigt att det drabbar era användare. Inte minst eftersom det inte behöver vara så utan kan ske transparent. Sen kan man fråga om ni inte vill ha möjlighet att själva bestämma vilken information som ska göras tillgänglig? :)

Importen borde vara fristående. Ni får större flexibilitet om saker och ting bryts ut i fristående delar. Cachen borde inte skapas vid request utan gör en egen snurra som hämtar/notifieras av den externa resursen när den ändras. Då kommer det funka som så att när det kommer in en förfrågan, ja då finns cachen redan färdig och klar. Är den inte det levererar ni den äldre datan medan cache-snurran kör på och skapar färsk data i bakgrunden, precis som vanligt. Ty det är dess enda uppgift. Hokus pokus, några ögonblick senare är cachen uppdaterad av sig självt och följande förfrågningar får färsk data. Visst borde väl det funka?

Hur stora datamängder handlar det om förresten?

Medlem sedan feb. 20034 441 inlägg
#4

SPiN skrev:

Kolla på informationen kring cache-funktionalitet i mitt inlägg här. Så löser du det på snyggaste sätt, dock så garanterar det ju inte att informationen är helt färskt. Om det feed som ni hämtar information från uppdateras strax efter att en ny cache-fil har skapats, så förlorar ni ju nästan 10 minuters information. Är inte det hela världen, bör ni cacha datan. Och du kan använda cache med webservice också.

Jag har faktiskt Googlat lite på cachefunktionalitet idag men inte hittat så mycket info om det.

Det här såg däremot väldigt bra ut och jag ska testa ditt sätt att använda cache.

I mitt fall är det inte särskilt mycket information som ska ut till tredjepart och om det skulle bli en "förlust" på 10 minuter så är det inte hela världen.

Tack för hjälpen, ska kolla mer på detta imorrn så återkommer jag.

Medlem sedan feb. 20034 441 inlägg
#5

dAEk skrev:

Hur stora datamängder handlar det om förresten?

I nuläget är det en XML fil som skapas mot våra användare, där ytterst lite information visas.

Därför ska jag börja köra på SPiN's variant och kanske bygga en webservice kring det framöver.

Medlem sedan apr. 2008137 inlägg
#6

Om du verkligen bara ska hämta info från en part och "leverera" det till en annan skulle jag göra så här:
1. cronscript som hämtar och parsar info från din leverantör och stoppar in i db så ofta som informationen uppdateras (var 10e minut?)
2. exportscript som hämtar info från db och levererar i "något" format, xml eller json förslagsvis.

På så sätt kan du hålla en konsekvent leverans till din "kund" även om din datakälla skulle ändras.

Medlem sedan feb. 20034 441 inlägg
#7

Inte heller någon dum ide faktiskt.
Min info ska uppdateras var 5'e minut, men har märkt att datan ibland uteblir, det blir en timeout av något slag från vår leverantör.

Ska kolla med på cronjob, har aldrig provat det förut.

Medlem sedan apr. 2008137 inlägg
#8

Cron är lätt. Bara att bygga ditt script som vanligt och tala om för cron hur ofta det ska köras. :)

Medlem sedan feb. 20034 441 inlägg
#9

Japp, nu är det färdigt, tabellen töms och fylls upp igen var 6 minut nu, lika ofta som flödet uppdateras från vår leverantör.

* Case closed *

/red. Vinner man något på att kombinera det här med cachevarianten som nämnts ovan?

Medlem sedan apr. 2008137 inlägg
#10

Det du skulle kunna göra cachemässigt, om prestanda verkligen är ett problem, är att generera datafilen när cronscriptet körs istället för när användaren vill hämta datan. Men såvida du inte gör väldigt avancerade beräkningar eller har väldigt många requests så kommer du inte tjäna något på det.

För att förtydliga. Cache lägger man till när man får prestandaproblem. Det finns ingen större anledning att göra såna åtgärder i förebyggande syfte, om man inte med stor sannolikhet vet att trafiken kommer öka mycket inom kort.

Medlem sedan feb. 20034 441 inlägg
#11

Aha, då struntar jag i det.
I mitt fall är det så pass lite information och just nu få användare, så det spelar nog ingen roll.

Tack!

282 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
155 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)