Jump to content
php.lv forumi

Forma, kas rēķina!


Jamesonlv

Recommended Posts

XML fails šodienas kursam - http://www.bank.lv/vk/xml.xml .

 

Un tad vai nu ar PHP vai jQuery izvelc LTL kursu.

 

Iemetu diezgan labu jQuery tutu, kur ir parādīts kā to izdarīt - http://net.tutsplus....om-an-xml-file/ .

 

Elementāri, Vatson :)!

jQuery (vai drīzāk browseris) neatļauj cross-domain requestus, līdz ar to tas nedaudz var sarežģīt uzdevumu :)

Link to comment
Share on other sites

  • Replies 31
  • Created
  • Last Reply

Top Posters In This Topic

> jQuery (vai drīzāk browseris) neatļauj cross-domain requestus, līdz ar to tas nedaudz var sarežģīt uzdevumu :)

 

JSONP.

 

Bet, kā jau es sākumā arī teicu, labāk uzreiz izmanto PHP un POST rekvestu. Vai, ja negribi pārlādēt lapu, tad AJAX, kurš rezultātu iegūs no servera.

Link to comment
Share on other sites

Bet, kā jau es sākumā arī teicu, labāk uzreiz izmanto PHP un POST rekvestu. Vai, ja negribi pārlādēt lapu, tad AJAX, kurš rezultātu iegūs no servera.

muļķības, valūtas kurss mainās 1 dienā.

pie lapas ielādes paņem jaunāko, un ieraksti kā JS masīvu - objektu ( vai ja vajag tikai vienu , tad vispār elementāri )

un priekš kam tur līdzi staipīt jquery ?

tur takš nepieciešmas pāris rindiņas max 10-20 rindiņas koda , takš nē jāstiepj līdzi pāris simtii Kb ..

un VAI janoslogo serveris, katru reizi pārēķinot kursu un izrēķinot 2 mainīgos

Edited by Grey_Wolf
Link to comment
Share on other sites

Labāk ir katru rītu piecelties pirmajam un pašam ar roku kursu palabot!

priekš kam? - varbūt tev ir precīza informācija cikos LB dod jaunos kursus? un svētku dienās ?

( varu pateikt priekšā - tur nav stingri definēti nosacijumi )

kad klients pieprasa valūtas kursus - veic pieprasijumu uz LB, izlasa vajadzīgās valutas un izvada kā JS mainīgos Objektus

 

pēc tam jau klienta galā visu rēķina JS -

gan jau viņš gribēs pārbaudīt vairākas valūtas - un vairākas summas - vismaz 80% gadijumā tā būs ...

P.S. par noslodzi domāju , ka nevajag vienam klientam katru reizi visu rēķināt servera galā.

Link to comment
Share on other sites

Servera pusē veicam aprēķinus ņemot par pamatu kursu, kuru ar cron job ik pēc 24 h atjaunojam.

kādēļ servera pusē ??

tiešām gribās visu laiku veikt pieprasijumus serverim ??

Par cron jā , var visu ielasīt kādā failā - kurš jau ir kā JS daļa , un tad tik includot pamat lapā ..

tikai, kā jau minēju - uzmini nu cikos būss jaunais kurss ..

--

P.S. savulaik dariju šādi:

visus kursus ierakstiju DB ,

tiko klients pieslēdzas- pārbaudam vai jaunais kurss jau ir DB , ja nav veicam pieprasijumu LB, ierakstam DB un adodam klientam,

tas dod vairākas priekšrocības , var dabūt arī vecos valutas kursus, izrēķināt kāpumus/kritumus utt...

papildus var ielikt - teiksim 12 dienā, lai cron savāc jauno kursu ( ja nu neviens klients vel nav bijis )

--

edit: DB izmantoju jo nekad nevar zināt vai LB serveris nenobremzēs, piedevam pieprasijums uz citu serveri, vienmēr būs lēnāks nekā neliels SQL kverijs uz lokālo mašīnu ..

Edited by Grey_Wolf
Link to comment
Share on other sites

> tiko klients pieslēdzas- pārbaudam vai jaunais kurss jau ir DB , ja nav veicam pieprasijumu LB, ierakstam DB un adodam klientam,

 

Lūk, tā ir lieka resursu tērēšana.

 

Kaut kāds viens HTTP rekvests nav nekas.

 

To, protams, var darīt klienta pusē. Bet es neredzu tam jēgu.

Link to comment
Share on other sites

Man liekas, ka cron darbināšana ir lieka resursu tērēšana :)

 

Iegūstam pēc pieprasījuma un iekešojam.

 

<?
$file = 'kursi.xml'; // Fails, kurā glabājas kursi
$rates = ''; // Te glabāsies XML kursu dati
$lifetime = 6 * 60 * 60; // kursi derīgi 6h
$xml_url = 'http://www.bank.lv/lat/rss/kursi.php';

// Pārbaudam, vai saglabātie kursi vēl ir derīgi
$last_modified = file_exists($file) ? filemtime($file) : 0;

if(($last_modified + $lifetime) < time()){
// Kursam ir beidzies derīgums, ielādējam jaunu
$rates = file_get_contents($xml_url);
// Saglabājam lokālo kopiju
file_put_contents($file, $rates);
}else{
// Saglabātie kursi vēl ir derīgi, lietojam tos
$rates = file_get_contents($file);
}

// Šeit apstrādājam kursu XML datus un izvelkam vajadzīgo vērtību
echo $rates;

 

Kodu varētu vēl pielabot, kas pārbaudītu, vai jaunie kursi ir veiksmīgi iegūti. Ja nav, tad izmantot veco kursu kopiju.

Edited by briedis
Link to comment
Share on other sites

> Man liekas, ka cron darbināšana ir lieka resursu tērēšana :)

 

Nē — viss ko tas dara ir noteiktā laikā izsauc kkādu komandu (mūsu gadījumā, PHP skriptu).

 

Bet tavs variants arī ir lietojams. Jo, atšķirībā no Grey_Worlf varianta, netiek veikts pierasījums uz attālināto resursu katru reizi.

Link to comment
Share on other sites

Bet tavs variants arī ir lietojams. Jo, atšķirībā no Grey_Worlf varianta, netiek veikts pierasījums uz attālināto resursu katru reizi.

 

Īstenībā, tas ko teica Pelēkais Vilks jau ir tas, ko es uzrakstīju:

 

"tiko klients pieslēdzas- pārbaudam vai jaunais kurss jau ir DB , ja nav veicam pieprasijumu LB, ierakstam DB un adodam klientam,"

 

Viņa variantā skatamies, vai šodienas kurss glabājas DB. Ja nav - ielādējam uzreiz. Kā sapratu, tiek glabāta arī iepriekšējo kursu vēsture, kas ļauj tad arī taisīt statistikas līknes...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...