Forumai | Naujienų archyvas | Straipsnių archyvas | Struktūra |
Paieška      

Naudotojas: Anonimas | Naudotojų sistemoje: 27644 | Dabar naršo: 20 (0)
Prisijungimas
Vardas:
Slaptažodis:
 prisiminti

Dar neužsiregistravai?
registruokis »

Pamiršai slaptažodį
Naujienų kategorijos
 PHP naujienos (187)
 php.lt naujienos (38)
 Įvairios naujienos (89)
 Naujos programos (66)
 Darbas (73)
Naujienos

Tradicinė WEB konferencija //2011.03.29

Startup Weekend, Vilnius/Kaunas ! //2010.03.26

PHP konferencija 2010 //2010.03.16

PHP conf'09 tiesioginė transliacija - internetu //2009.04.21

PHP conf '09 //2009.04.08

Ieškomi pranešėjai PHP konferencijai '09 //2009.03.19
Naudingos nuorodos

Kaip naudotis
BBcode tinklapyje?

php.lt tinklapio ChangeLog'as
php@konf.lt konferencija
Prisiregistravimas

Paskutinės žinutės

Paskutinės 25 žinutės PHP.LT forumuose
PHP.LT forumų sąrašas

Re: kaip ismokti dirbti su MySQL ? [atsakyti]
2014-12-16 14:13, parašė: syedshah20

Naudojant GROUP BY į SELECT galima rašyti tik agregatines funkcijas( SUM, COUNT, AVG ir t.t.) 70-332 exam questions - testking
ir tuos stulpelius, pagal kuriuos grupuojama.
Jeigu selectini kitus, gali būti neprognozuojami rezultatai. Kaip kad ir tavo atveju.
STRICT režimu gautum klaidą.


Reikia 2 failu travenui [atsakyti]
2014-12-16 01:24, parašė: erns

Sveiki, gal kas turite kaip ant tita2.com turgu tarptautinio koda ? Ir gal galite pasidalinti?

Reikia dar vieno failo oaze.php nerandu abieju niekur

Re: Duomenu itegralumas [atsakyti]
2014-12-15 22:34, parašė: xayer2

Sunkoka patarti, kai žinom, ko norite, bet nežinome, ką jau turime(Plačiau...)...

Duomenu itegralumas [atsakyti]
2014-12-15 14:50, parašė: l33tas

Susidūrėme su problema. Generuojant sąskaitas (ar kitus dokumentus) figūruoja kliento (darbuotojo) duomenys. Tačiau klientų duomenys gali keistis (pasikeičia moters pavardė po vestuvių). Mums reikia, kad redagavus moters pavardę išliktų sąskaitos ir su sena pavarde iki tam tikros datos, ir nuo tam tikros datos naudotų naują pavardę. Kaip optimizuotai tai padaryti?

Re: Postinimas į kitą svetainę kliento pusėje [atsakyti]
2014-12-14 11:08, parašė: Zygis_

182.186.146.146
irt: IRT-PTCLBB-PK
address: General Manager,
address: Pakistan Telecommunication Company Limited.
address: H-9/1, CDDT Building, Training Block
address: Islamabad, Pakistan

Dar ir tekstą pusiau logišką sukurpė :D

Re: Postinimas į kitą svetainę kliento pusėje [atsakyti]
2014-12-13 08:13, parašė: sashasuman

bl as nesuprantu pass4sure ccna kad durnus klausimus uzdavineti jai ats vistiek nezinai, kas cia per trolliu epidemija?

Re: Didžiulė apkrova [atsakyti]
2014-12-11 10:08, parašė: Zygis_

Sesijos redaguoti negali. Viskas k1 gali tai tik pasikeisti sessionID. O dėl disko birbinimo tai šiam kartui sprendimo gal ir pakaks, bet jei teks naudoti pvz 2 serverius - nebeveiks.

Re: Didžiulė apkrova [atsakyti]
2014-12-10 23:39, parašė: xayer2

<?
session_start
();

/**
 * paskaičiuoja sesijų skaičiu 
 * sesijų direktorijoje
 */
function getUsersOnline() {
    
$count 0;

    
$handle opendir(session_save_path());
    if (
$handle == false) return -1;

    while ((
$file readdir($handle)) != false) {
        if (
ereg("^sess"$file)) $count++;
    }
    
closedir($handle);

    return 
$count;
}

echo 
"vartotojų online = " getUsersOnline() . "<br>";
?>


Re: Didžiulė apkrova [atsakyti]
2014-12-10 23:35, parašė: xayer2

Dėkoju už atsakymus, jeigu ne Jūs, taip greit nebūčiau išmąstęs sprendimo. :)

Manau, kad sesijos nelabai tinka, nes čia tikslumas būtinas... O Sesijas, kaip suprantu, įmanoma koreguoti... Didėja įsilaužimo tikimybė ir pan...

Kešas, serverio pusėje, tikrai šaunus dalykas... Bet jis skirtas, greičiui, per išvedamą rezultatą(vaizdą)... O pas mane, tokio, kaip ir nėra...

Išmąsčiau, kad geriausia būtų, jeigu sukurčiau papildomą MYSQL lentelę ir ten būtų įrašai... Kad prisijungusių sąrašas tikrintas "|data|prisijungusiu_skaicius|"... Kiti vartotojai, nebetikrins, kiek yra prisijungusių, o iškart gaus rezultatą, kiek yra prisijungusių, jeigu atitiks data(manau, 1sekundės skirtumas irgi duos rezultatą)...

Re: Didžiulė apkrova [atsakyti]
2014-12-10 22:19, parašė: Zygis_

Kažkas čia negerai. Kas trukdo aptarnauti kelis vartotojus vienu metu? Čia kode specialiai kažkoks "lockinimas" aprašytas? Jei galėtum detalizuoti būtų kiek aiškesnis vaizdas.

Kaip man dabar atrodo: pareina iš naršyklių keliolika requestų, o serveris vienu apdoroja tarkime tik 5 (php-fpm procesų kiekis, arba apache php_mod limitai ir pan). Tikrinimas veikia tarkime 0.5 sek. Tai 16 -a užklausa bus aptarnauta anksčiausiai po 1.5 sek, o per tą laiką į eilę atsistos dar daugiau requestų. Nes kol kas tiek tiek sugalvoju kodėl serveris gali, bet nedaro ko reikia.

Jei tie requestai yra to paties vartotojo (tas pats sesijosID), tai jie nebus vykdomi paraleliai, jei sesijos bus diske. Pas mane kažkada tokia situacija buvo, tai padėjo session_write_close funkcija (čia su salyga, kad tau tinka sesija read-only).

O šiaip su redis būtų labai paprastas sprendimas nieko per daug nerašinėjant:
set sessionID 1
expire sessionID 300

Su kiekvienu requestu padarai tą patį arba dar geriau - tik expire.
Kai reikia sužinoti kiek yra online naudojantis php driveriu:
https://github.com/nicolasff/phpredis
$count = $redis->dbSize();
Su kitais draiveriais jau reikia žiūrėti.


Re: Didžiulė apkrova [atsakyti]
2014-12-10 21:20, parašė: Neodan

to md5: nenuvertink MySQL (-;

Siaip kaip ir minejo, sprendimo/sprendimu pasirinkimas priklauso nuo poreikiu.
Nes sessijas galima saugoti diske, virtualioje particijoje (kuri is esmes mapina ram), keshavimo sprendimus kurie viska patogiau saugo rame (memcached, apc, redis), duomabazeje arba dar geriau kombinuoti kelis variantus. Pvz. MySQL + memcached|redis|...

Viskas turi savus privalumu ir trukumu.

Kaip suprantu 1kk online useriu yra teorinis kiekis kuri labai tikites ateityje pasiekti (nes jei tiek turetumete tai sprendimas butu jau buves sukurtas kazkur prie 5k - 10k kiekio).

P.S. greitis atsiranda kesuojant, juk nera jokio tikslo online useriu kieki perskaiciuoti po 1k kartu per minute (-;

Re: Didžiulė apkrova [atsakyti]
2014-12-10 16:51, parašė: xayer2

Aišku.

O kaip manai, jeigu daryti, kad vis dar prisijungęs tikrintų ne visus, o tarkim -5 ir +5, nuo tavo id'o... ir atsižvelgtų į paskutinio veiksmo atlikimo laiką?

Mano varijantu, neliktų tikslumo :| Tačiau tokiu atveju greitis atsirastų...

Kaip aš suprantu, čia lagas atsiranda dėl to, kad kelioliką vartotojų vienu metu, nori patikrinti tą patį laiką... Būtent tuomet, kol vieno nepatikrina... kito neprileidžia ir taip atsiranda strigtis...

>>Stovi serveris... Galios pilnai pakanka... Tik reik, kodą sutvarkyt...

Re: Didžiulė apkrova [atsakyti]
2014-12-10 07:57, parašė: Zygis_

Na aš sesijas saugočiau kokiame nors redis, o app serverius pakurčiau kelis (tokiu atveju redis turėtų gulėti kažkur atskirai) su ant viršaus užmestu loadbalanceriu. Ko neišsprendžia vienas serveris, tą išsprendžia keli :)

Bet visgi dėl lago reikia konkrečiau žiūrėti, kas būtent lagina. Priežasčių gali būti daug. Tai taip vienareikšmiškai atsakyti labai sunku, o mes galim tik paspėlioti. Pvz.: naudojatės paprastu hostingu ir pasiekiate aktyvių php procesų limitą.



Re: Didžiulė apkrova [atsakyti]
2014-12-10 00:03, parašė: xayer2

Būtų labai gerai, jei papasakotum plačiau ir dar nepamaišytų koks trumpas pavyzdukas, kad esmę pagauti... :)

Re: Didžiulė apkrova [atsakyti]
2014-12-09 22:50, parašė: md5

sesijas gal į ram;us ?:)

Re: Didžiulė apkrova [atsakyti]
2014-12-09 21:00, parašė: Neodan

Na as saugociau sessijas db, ko pasekoje butu galimybe lengvai paskaiciuoti aktyvias sessijas bei zinoma atsiranda galimybe jas gerokai paprasciau valdyti. Juo labiau, kad 1 milijonas irasu MySQL nera ir labai didelis kiekis (zinoma tai remiasi i tai kaip suprojektuota db ir kokia servako gelezis).

Didžiulė apkrova [atsakyti]
2014-12-09 13:23, parašė: xayer2

Sveiki,
užsiimu web/wap programavimu ir susidūriau su problema, apie kuria internete informacijos tikrai stoka...

Įsivaizduokime, kad prie www.example.com, šiuo metu prisijungę 1'000'000 vartotojų... Jeigu vartotojas, neatlieka veiksmo, per 5min. jis skaitomas atsijungęs... Reikia žinoti, kuo įmanoma tiksliau, kiek vartotojų, šiuo metu prisijungę...

Visam šiam reikalui, kodas yra labai paprastas, bet kai skaičiai išauga, iki išties įspūdingų... Susiduriama su labai rimta problema - "lagu" ir pan.

Kaip išspręsti tokią problemą?

Re: narsykles back butonas [atsakyti]
2014-12-05 16:13, parašė: md5

O gal geriau nesaugok sesijoje? keli tab;ai skirtingais URI tau sugriaus viską, nes SESSION ID === SINGLETON. Pagauni?

išmėgink :)
http://www.sitepoint.com/build-php-framework-symfony-components/

Re: narsykles back butonas [atsakyti]
2014-12-05 11:38, parašė: Dewilas

Nu gerai, tarkim, einu į meniu Rezulatai, po to Rezultatų lentelė. Mano kelias atvaizduos Pradžia --> Rezulatai --> Rezultatų lentelė. Masyvas atrodytų taip:

<?
Array
(
    [
0] =&gt; Array
        (
            [
name] =&gtPradžia
            
[url] =&gt; /
            [
first] =&gt1
        
)

    [
1] =&gt; Array
        (
            [
name] =&gtRezulatai
            
[url] =&gt; /lit/Rezulatai/356/4/190
            
[menu_group_id] =&gt4
            
[menu_parent_id] =&gt0
            
[submenu] =&gt0
        
)

    [
2] =&gt; Array
        (
            [
name] =&gtRezultatų lentelė
            
[url] =&gt; /lit/Rezultatu-lentele/92
            
[menu_group_id] =&gt
            [
menu_parent_id] =&gt0
            
[submenu] =&gt0
        
)

)
?>


Spaudžiu atgal, ir tada naršyklė kaip suprantu pasiima viską iš cache - užkrauna puslapį. Kelias tampa Pradžia --> Rezulatai, tačiau sesijos masyvas išlieka toks pat, nes back buttonu neresetinama sesija. Spaudžiu, tarkim, kitą nuorodą "Kalendorius" ir atsidarius, suformuojamas kelias Pradžia --> Rezulatai --> Rezultatų lentelė --> Kalendorius, nes prieš tai lieka masyve paspaustas linkas. Kaip ir minėjau, pasidariau tikrinimą, kad jei nesutampa REQUEST_URI ir paskutinio masyvo sesijoje indexo reikšmė ['url'], tai unset'inu paskutinį masyvą. Tas veikia tik tuo atveju, jeigu spaudžiu back ir dar refreshinu.

<?
if($_COOKIE['PHPSESSID'] == '904cadae7c965540c9c0294b028b4c2b') {
        
print_r($_SESSION['breadcrumbs']);
            
$location_url $_SERVER['REQUEST_URI'];
            
            
$last_array = array();
            
$last_array end($_SESSION['breadcrumbs']);

            if (
$last_array['url'] != $location_url) {
                
$last_index count($_SESSION['breadcrumbs'])-1;
                unse t (
$_SESSION['breadcrumbs'][$last_index]);
            }
        
        }

if(!isset(
$_SESSION['breadcrumbs'][0]['first'])) {
            
array_unshift($_SESSION['breadcrumbs'], array('name' => text('_m_menu_location_first_page'), 'url' => '/''first' => true));
        }

bla bla bla...
?>


Taigi, bandyta ir neišsaugoti cache, nuodojant casche kontrolę header'iuose - tas nepasiteisina.


Re: Reikia pagalbos. [atsakyti]
2014-12-04 07:07, parašė: maya628

Bet aš niekaip nesuprantu http://www.pass-4sure.us kaip man perstumti į viršų tos eilutės kur Žaidėjų ir Žemėlapis man nepasislenka į viršų, neturiu minčių kaip jas paslinki į viršų.

Re: narsykles back butonas [atsakyti]
2014-12-03 22:26, parašė: Zygis_

/level1
spaudžiu linką
/level1/level2
spaudžiu back
/level1
spaudžiu F5
/level1

Kaip gali susidubliuoti elementai masyve (jei sakai kad sužiūri dublikatus)?

Re: narsykles back butonas [atsakyti]
2014-12-03 18:57, parašė: md5

redirect'int bandei?

šiaip tu kažką per sudėtingai darai, kokius ten masyvus saugai sesijoje?


Re: narsykles back butonas [atsakyti]
2014-12-03 14:40, parašė: Dewilas

Tai esme tame, kad masyve ir nera vienodu elementu. Pasidariau tikrinima, jeigu REQUEST_URI nesutampa su paskutiniu sesijos masyvo indexo reiksme ['url'], tai unset'inu paskutini masyva. Viskas tvarkoje ir gerai kelia atvaizduoja tik tuo atveju, jei paspaudziu back ir dar refresinu browseri.

Re: narsykles back butonas [atsakyti]
2014-12-03 09:24, parašė: Zygis_

Iš bėdos, tai gali prieš įrašydamas kažka į masyvo galą pirmiausia pereiti per jį ir pažiūrėti ar toks pats elementas jau yra. Jei taip - trini viską kas toliau nuo rasto elemento.

Re: narsykles back butonas [atsakyti]
2014-12-03 09:18, parašė: Zygis_

Na manau yra teisingiausias dalykas susirasti kelią be tokių hackų. Jei tai tiesiog puslapis - vistiek kažkur DB guli hierarchinė struktūra ir gali susirasti visus "tėvus". Jei kažkas kitko - gali tekti pahardkodinti truputį. Nes sesijoje trackinti kelią tai žinai... Vadinčiau ne "primityvus sprendimas", o "kreivas sprendimas".


Easter spells out beauty, the rare beauty of new life | © php.lt komanda 2001-2013