Jump to content
php.lv forumi

memcache


freak

Recommended Posts

Vai memcache noder tikai pie atkartotas datu nolasishanas vai ari noder pie update/insert?

Piemeram, vai var izdarit, ka tiek updeitota nevis datubaze, bet memcached un tad , piemeram, ik pec 10 min automatiski dati tiek parakstiti uz DB?

 

p.s. svarīgi, ka updeitam vajadzetu notikt automatiski ik pec kada laika, nevis usera izsauktam.

Link to comment
Share on other sites

Piemeram, vai var izdarit, ka tiek updeitota nevis datubaze, bet memcached un tad , piemeram, ik pec 10 min automatiski dati tiek parakstiti uz DB?

 

Automátiski PHP skriptus vari izsaukt ar cron (uz newindows) vai at (uz windows). Uz páréjiem jautájumiem atbilde ir "var", tikai skaties, lai atmi'na nepietrúkst.

Link to comment
Share on other sites

Ok, skaidrs, ka tā var darīt, bet vai tā ir tipiskā metode ko dara, ja ir daudz updeiti vai arī dara kā savādāk ?

vai memcache noder tikai selectam?

 

Vel es iedomājos vai nebūs tā, ka ja pārbauda pēc 5 min, kas jāapdeito un tad updeitos vai tad baigi nesabremzēsies viss, jo būs daudz updeit vaicājumu vienlaicīgi.

Link to comment
Share on other sites

Tā nav tipiska metode un, protams, ka uzkrājot datus un liekot datu bāzē visus uzreiz, būs aizture. Mēģini strukturēt sistēmu tā, lai nebūtu milzīga rakstīšanas slodze uz vienu DB serveri. Veic testus, lai pārbaudītu, vai vispār tagad nav veltīgs satraukums - varbūt pie korekti izplānotas datu bāzes tā slodze nav tik liela, kā liekas.

 

Varbūt vari pastāstīt konkrētāk par projektu un ierakstāmajiem datiem? Sarežģītus, skeilojamus risinājums vajag diezgan reti.

Link to comment
Share on other sites

Lai iztiktu bez cron, viens no standarta risinājumiem, piemēram, statistikas vākšanai, ir skaitīt memcache counteri un pie noteikta limita izpildīt vienu insertu uz datubāzi, konkrētā lauka vērtību uzreiz palielinot par 100. Piemēram, skaitam pageview skaitu un teiksim katru 100. vai 1000. rakstam datubāzē un resetojam memcache counteri.

Link to comment
Share on other sites

Tā nav tipiska metode un, protams, ka uzkrājot datus un liekot datu bāzē visus uzreiz, būs aizture. Mēģini strukturēt sistēmu tā, lai nebūtu milzīga rakstīšanas slodze uz vienu DB serveri. Veic testus, lai pārbaudītu, vai vispār tagad nav veltīgs satraukums - varbūt pie korekti izplānotas datu bāzes tā slodze nav tik liela, kā liekas.

 

Varbūt vari pastāstīt konkrētāk par projektu un ierakstāmajiem datiem? Sarežģītus, skeilojamus risinājums vajag diezgan reti.

 

 

Taisu datorspēli flash + php. Domāju, ka būs vienlaicīgi daudz lietotāju, tāpēc domāju, ko varētu izdarīt, lai nenoslogo DB.

Diezgan daudz sanāk update vaicājumi, jo uz katru darbību jānoņem naudas, jāpieskaita citi punkti, jāapdeito karte utt.

Link to comment
Share on other sites

Ja backends jau ar rakstīšanu vien netiks galā, tad būs baigās problēmas. Vari veidot spēli iekšēji tā, lai DB serveris netiktu visu laiku raustīts. Piemēram, izveido starpnieku pirms php (vai atmetot php vispār), kas nodrošina konekciju apstrādi no flash un kešošanu. Tas būtu kā serviss, kas saņem konekcijas, veic spēles mehāniku atmiņā un ik pa laikam ieraksta spēles stāvokli datu bāzē. Piemēram, visa spēlētāju informācja glabājas atmiņā, līdz ar to, konekcija, kas pieprasa spēlētāja informāciju, piemēram, naudas daudzumu, datu bāzi nemaz neaiztiek, jo serviss to atgriež no atmiņas. Serviss paralēli darbina threadu, kas visu informāciju cikliski pārstumj uz datu bāzi.

Bet ja tas ir pārāk darbietilpīgi, tad vienkārši izstrādā gameplay tā, lai nebūtu masīva nemitīga ierakstīšana. Parasti jau spēlēs rakstīšana ir tad, ja veic kādu darbību - pārējais ir apskatīšana/lasīšana. Vienīgi action spēlēs rakstīšana ir vismaz tikpat intensīva kā lasīšana, ja taisi tādu, tad backends jāraksta līdzīgi kā aprakstīju augstāk - varbūt ne visai spēlei, bet vismaz nemitīgi mainīgajai daļai.

Link to comment
Share on other sites

  • 2 weeks later...

Ja kautko inserto/updeito DB, tad arī iekš memcache atjauno uz aktuālajiem datiem. tā vismaz selekti atkritīs. Tik daudz cik viekt visus insertus/update DB serverim ir jāspēj.

 

selecti man atkriit ari taapat, jo selectu izmanto tikai sakuma ieejot spele un panjemot visus datus.

pectam visi speles dati glabajas pashaa spele + paraleli uz katru izmainju parsutiti uz datu bazi (update/insert).

 

ideali jau butu, ja butu jasuta dati uz serveri tikai spiezhot SAVE, bet tas nav diezko erti lietotajam.

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