Jump to content
php.lv forumi

kā sinhronizēt xml


Jay Kay

Recommended Posts

ir source xml fails, kurā kkas vecs tiek izmests un jauns tiek pievienots. es vēlos uzturēt cik vien iespējams aktuālu kopiju uz sava servera. ar cron tabu uzliku, lai pārkopē noteiktos laikos, taču tomēr nav pietiekama aktualitāte. vai vienīgais veids ir crontab, kuru uzliek, lai ik pa, piemēram, 5min salīdzina un pārkopē vai arī ir vēl kaut kādi varianti?

Link to comment
Share on other sites

es savu lapu hostoju pie SigmaNet un source xml fails ir no Latvijas Vēstneša - www.lv.lv/rss/amatuk.xml

 

kur es varu iemācīties/uzzināt par servera noslodzi? (jā, es jau mācos universitātē)

gribu saprast, kādas manas darbības noslogo serveri un šajā gadījumā, cik ļoti serveris tiks noslogots, ja crontab tiks uzstādīts tā, lai izpildītu nelielu skriptu reizi minūtē. vai tas atkarīgs tikai no tā, cik resursu prasošas darbības izpilda skripts?

 

tā kā serverī man nav tādas tiesības, tad DRDB+GlusterFS man neies cauri laikam.

Link to comment
Share on other sites

Man ir aizdoma, ka šie nav tie dati, kuriem būtu nepieciešama "reālā laika" aktualitāte un pilnīgi pietiek ar crontab risinājumu.

 

Ja tu gribi būt pārliecināts, ka cilvēki saņems info par to, ka ir jauns amata konkurss tiklīdz viņš tiek publicēts, tad veido savā pusē apziņošanas sistēmu, kaut vai izsūtot interesentiem e-pastus par jaunajiem konkursiem, nevis paļaujies uz to, ka lietotāji pamanīs jaunos konkursus tad, kad ienāks tavā lapā. Pie šāda risinājuma 5 minūšu nobīde būs pilnīgs sīkums.

Link to comment
Share on other sites

es ticu, ka 5 min šajā gadījumā būs pilnīgs sīkums, taču es gribu zināt veidu kā vislabāk uzturēt failu aktuālu.

 

vēl man ir ideja nolasīt lapas modification time ar

 

$fup="http://lv.lv/rss/amatuk.xml";
$nup=fopen($fup,"r");
echo "<pre>";
$read=stream_get_meta_data($nup);
print_r ($read[wrapper_data][1]);
echo "</pre>";
fclose($nup);

 

un katru reizi pirms lietotājs mēģinās failu atvērt uz mana servera, tiks salīdzināts modifikācijas datums un attiecīgi tiks vai nu netiks veikta kopēšana, taču šajā gadījumā source serveris (no www.lv.lv) atgriež šī brīža datumu un laiku, tādēļ neder. varbūt kaut kādas idejas par šo risinājumu?

Edited by Jay Kay
Link to comment
Share on other sites

Man bija šāda metode twitter kešošanai lokāli:

 

//Atjaunojam twittera JSON datus ik 5 minūtes
function updateTwitter(){
$path = "js/twitter.json"; //Vieta, kur glabājas JSON dati
$username = "my_twitter_username"; //Lietotājvārds
$entry_count = 6; //Atgriežamo ierakstu skaits
$update_interval = 300; // 5 minūtes

$url = "http://twitter.com/statuses/user_timeline/$username.json?callback=twitterCallback2&count=$entry_count";
$stat = stat($path);
$last_mod = (int)$stat[9]; //Kad pēdējo reizi labots fails.
$delta_mins = time() - $last_mod;
if($delta_mins > $update_interval){ //defaultā 5 minūtes = 300 sekundes
	if($json_data = @file_get_contents($url)){ //Suppress warnings, ja neizdodas dabūt datus
		file_put_contents($path, $json_data);
	} else{
		touch($path); //Pabakstam failu (maina pēdējās modificēšanas datumu), lai nav jāmēģina atkal, ja neizdevās dabūt datus
	}
}
}

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...