Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Arhitektura PHP aplikacije

[es] :: PHP :: Arhitektura PHP aplikacije

Strane: 1 2

[ Pregleda: 7496 | Odgovora: 34 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2246 Profil

icon Re: Arhitektura PHP aplikacije29.12.2015. u 22:58 - pre 63 meseci
@Nemke_BG

Isto to može i apc_store/add i isti se efekat dobija.

ALI! (podebljano)

citat sa php manuala:

Citat:

serialize() returns a string containing a byte-stream representation of any value that can be stored in PHP. unserialize() can use this string to recreate the original variable values. Using serialize to save an object will save all variables in an object. The methods in an object will not be saved, only the name of the class


PS: Ne daj se sa tim gripom, ako te merka neka temperatura, ne čekaj ništa nego - Febricet.
about:networking
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1074
*.ptt.rs.



+213 Profil

icon Re: Arhitektura PHP aplikacije29.12.2015. u 23:42 - pre 63 meseci
Mozes da stavis taj kod u komentar posle prvog izvrsavanja i sta time dokazujes? Dokazujes da ce u jednom specificnom slucaju tvoj kod da se brze izvrsi.
Da li je to pitanje, da li je to problem, da li se time ovde bavimo?
Bavimo se sustinom a ne ko ce lepse napisati slican kod i ciji kod ce brze da se izvrsi.
Bavimo se sa time da li PHP moze da ima klasu koja se moze koristiti za razlicite requeste. Bavimo se objektom, kada on postoji i gde on postoji i dokle postoji.
Ne bavimo se mestom definisanja klasa i brzim i lepsim kodom.
Da li je za pitanje bitno gde se nalazi kod tj definicija klase ili je bitno kada i gde i do kada postoji objekat te klase?

Vec sam jednom rekao, da, jesi ubrzao izvrsavanje koda u odredjenom slucaju ali to ubrzanje je mizerno i irelevantno za pitanje jer se ovde ne radi o brzini.

Projekat na kojem radim poslednjih par godina ima barem 2 miliona iskucanih redova i 100.000 online korisnika i 5000 klasa.
I zamisli, sve klase se automatski ucitavaju i dovojno mi je da stavim $a = new Class(). Svaka definicija klase je ucitana uvek.
I sta mislis koliko su opale performanse aplikacije? Nista. Nema potrebe za taj if else koji toliko forsiras a nije ni bitan za pitanje.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

svepomalo

Član broj: 306404
Poruke: 186



+21 Profil

icon Re: Arhitektura PHP aplikacije29.12.2015. u 23:48 - pre 63 meseci
Citat:
VladaSu
Projekat na kojem radim poslednjih par godina ima barem 2 miliona iskucanih redova i 100.000 online korisnika i 5000 klasa.

Ne bih da ulazim u raspravu, imam samo jedno pitanje :)
Da li na tom projektu koristis ovde pomenuti apc ili nesto drugo(opcache?) ili sve ide on the fly?
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1074
82.208.210.*



+213 Profil

icon Re: Arhitektura PHP aplikacije29.12.2015. u 23:48 - pre 63 meseci
Zanemari stil pisanja i predji na poentu. I moj i tvoj kod radi istu stvar i dobija isti rezultat i to je poenta.

[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1074
82.208.210.*



+213 Profil

icon Re: Arhitektura PHP aplikacije30.12.2015. u 00:04 - pre 63 meseci
@svepomalo Iskreno da ti kazem vise ne znam sta se koristi. Dosta se menjalo kako je aplikacija rasla. Ima nas 20 programera koji rade na jednom projektu 5 godina i vise ni ne ulazim u neke delove koda.
To se radi na nivou FW sa kojim se sluzim ali ne gledam kod FW jer je to prosto nemoguce sve do detalja pratiti a istovremeno uraditi svoj deo posla.
Nemoj me drzati za rec ali misli da smo apc koristili probno nesto kratko i nije dale neke rezultate a opcache je dao bolje rezultate ali mislim da se i od toga odustalo posle nekog vremena i sada se nesto drugo koristi. Uglavnom kada sam poslednji put video performanse servera nismo imali problema sa samim php-om. I pored ucitanih svih klasa bio je vrlo brz.
Za sada PHP7 nam je desetak buda brzi i koristi samo trecinu memorije od ranije.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

svepomalo

Član broj: 306404
Poruke: 186



+21 Profil

icon Re: Arhitektura PHP aplikacije30.12.2015. u 00:18 - pre 63 meseci
@VladaSu

hvala ti na odgovoru, opcache se meni pokazao kao odlicno resenje, podigao mi je performance za nekih 15%
apc nisam koristio, memcahe za sesije (mada planiramo da implementiramo jwt) i redis za kesiranje ka bazi ali to je druga prica vec :)
PHP 7 nismo podizali jos uvek, imamo 20+ servera, kad prodje ovo ludilo oko nove godine krecemo sa njim :)
valjda ce sve da radi :)
 
Odgovor na temu

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2246 Profil

icon Re: Arhitektura PHP aplikacije30.12.2015. u 01:40 - pre 63 meseci
@VladaSu

Citat:
Mozes da stavis taj kod u komentar posle prvog izvrsavanja i sta time dokazujes? Dokazujes da ce u jednom specificnom slucaju tvoj kod da se brze izvrsi.

Mogu. Ali ne treba, jer će da istekne vreme ttl, arg3. Pa onda mora ponovo da se očita komplet funkcija.
I ne dokazujem tebi ništa, jednostavno - ukazujem na nepravilno korišćenje.
Video si takav jedan primer (tvoj) sličan pa od njega nalepio/prepravio ovde?
Svašta pišu po svojim blogovima, svakakvi.

Citat:
Da li je to pitanje, da li je to problem, da li se time ovde bavimo?
Bavimo se sustinom a ne ko ce lepse napisati slican kod i ciji kod ce brze da se izvrsi.


Ko će lepše? Šta sad, moj primer je `lepši` od tvog ili je jednostavno - logičniji, korektniji?
Da ima tema dodatnih, različitih syntax highlightera za code tagove ovde po ES, pa da se izglasa, čiji je izbor lepši, ovako.. stvarno ne razumem deo citiranog.
Hint: gde su manje mogućnosti da se desi `unpredicted scenario`. To je bitno, ne čiji kod je lepši. Sa 2 razmaka ili jednim tab space-om...

Citat:
Bavimo se sa time da li PHP moze da ima klasu koja se moze koristiti za razlicite requeste. Bavimo se objektom, kada on postoji i gde on postoji i dokle postoji.

Tako je. To i ja kažem i time smo se bavili. Ukoliko: .. [pa od mene par stavki]... jel' tako beše bilo?
Ja i dalje verujem da ne može sve da se skuca jasno u 3 rečenice na pitanje - "Kako to i to zapravo radi? Šta radi klip, a šta stublina u tom i tom određenom momentu?"

Citat:
Ne bavimo se mestom definisanja klasa i brzim i lepsim kodom.

Ne bavimo se, slažem se. Ali onda.. ne znam ni ko te terao da napišeš loš primer za apc.. ? Neko drugi bi te možda ispravio da to nisam bio ja, ne?
Elem, define `pretty` and than define `logically - correct, error -free in any case` .. to me.. please. :)
Ja nisam nigde napisao da ti imaš greške u sintaksi, nego da nešto drugo nije ok.

Citat:
Da li je za pitanje bitno gde se nalazi kod tj definicija klase ili je bitno kada i gde i do kada postoji objekat te klase?

Kako se uzme.

Citat:
Vec sam jednom rekao, da, jesi ubrzao izvrsavanje koda u odredjenom slucaju ali to ubrzanje je mizerno i irelevantno za pitanje jer se ovde ne radi o brzini.

Nikada ali nikada - ukoliko se ne radi o funkciji sa jednim ternarnim operatorom unutra (i slično tome) - nije na odmet ubrzati deo koda gde god može i zaista treba.

Jel' mi ne veruješ? Mirišem li ja malčice i sujete ovde ili ne?

Citat:
Projekat na kojem radim poslednjih par godina ima barem 2 miliona iskucanih redova i 100.000 online korisnika i 5000 klasa.
I zamisli, sve klase se automatski ucitavaju i dovojno mi je da stavim $a = new Class(). Svaka definicija klase je ucitana uvek.
I sta mislis koliko su opale performanse aplikacije? Nista. Nema potrebe za taj if else koji toliko forsiras a nije ni bitan za pitanje.


Pa zašto onda koristite php7 gde je sve 10 puta brže i 3 puta se manje memorije troši?
Zamisli da je bash 10 puta sporiji nego što jeste, a samim tim i sve tvoje .sh skripte koje si do sad iščukao? Jel' bi bilo bolje?
Zašto je BAŠ to primarna stavka na php7 changelog-u? Speed, performance.

Pa da bi ekipe od nekoliko programera/developera mogli da krkaju i još, dodatno, koliko god treba :) ... između ostalog.
I ne znajući da li ti koristiš apc ili ne, moja namera je bila da skrenem pažnju na neke nepravilnosti iz pozitivnih razloga.

Citat:
Zanemari stil pisanja i predji na poentu. I moj i tvoj kod radi istu stvar i dobija isti rezultat i to je poenta.


Ovde pretpostavljam da si se meni obratio, ali svepomalo upao iznenada...

Onaj ko baca pik na stil pisanja nisam ja.
Ja sam bacio pik na nešto drugo.
Poenta je da li ima efekta i kakav je ishod, da, toga sam se ja dotakao.
Primetio sam da si uzeo loš neefektivan primer.
Moj rad u ovom slučaju figurativno `ne postoji` (prvi primer) a obrazložio sam i detalje oko toga.
Drugi moj primer, to je već ok primenjivati i ima i efekta i logike i utiče i na performanse i to može da postoji.
Nikada ne bih upotrebio tehniku kao na prvom primeru za neki svoj rad ( klasa ---> apc_store/add === incomplete_object copy[useless] ).
Jesmo li se sada razumeli i istrošili dovoljno vremena - oko čega .. !?!

about:networking
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+709 Profil

icon Re: Arhitektura PHP aplikacije30.12.2015. u 07:41 - pre 63 meseci
Citat:
VladaSu:
...razliku izmedju definicije klase i objekta klase.
Jablana interesuje zivot objekta a definicija nema zivot. Definicija je definijcija.

Paaa sad... :)

U nekim khm jezicima khm koji su skroz objektni, sve je objekat, pa i klasa. Klase su instance klase Class. :) I klasa može da ima život, što da ona sedi kući i smara se dok se objekti ludo provode; može da se menja u toku rada aplikacije, može da dobija nove metode i gubi i menja postojeće itd.

https://en.wikipedia.org/wiki/Trait_(computer_programming)
https://en.wikipedia.org/wiki/Mixin
https://en.wikipedia.org/wiki/Monkey_patch

Ali to nije tema naše emisije, što se PHP-a tiče, razumeo sam sledeće: u 99% rešenja, i objekti i klase žive samo tokom jednog requesta, i ne vide objekate iz drugih requestova; za komunikaciju između objekata iz različitih requestova (a verovatno isto važi i za procese koji nisu trigerovani HTTP-om, već npr. cron-om) koriste se eksterne strukture (keš, baza, fajlovi), a ne funkcionalnosti samog jezika.
 
Odgovor na temu

Nemke_BG

Član broj: 163822
Poruke: 341
*.mediaworksit.net.

Jabber: Nemke_BG@elitesecurity.org
Sajt: https://www.nmdesign.rs


+45 Profil

icon Re: Arhitektura PHP aplikacije30.12.2015. u 08:57 - pre 63 meseci
@plus_minus
Zasto bi pa serijalizacija cuvala metode? Ona cuva interno stanje objekta (stanja varijabli, ime klase i slicno) i onda kad unserializujes ona instancira tu klasu i ti imas opet iste metode.

I smanji molim te malo kolicinu teksta koji pises, naporno je citati romane :)

@jablan

Definicija klase i instanca klase nisu ni u PHP-u a ni u jednom drugom jeziku ista stvar.

Ne razumem zasto si naveo bas ove Wiki definicije, jer PHP podrzava Trait-ove.

Sto se tice same teme, da u 99% resenja je tako, ako zelis da imas objekte koji zive kroz vise requestova moras ili da ih serializujes (integrisano PHP resenje, a gde ces da ih storujes je na tebi da odlucis) ili da koristis web server koji sam naveo ranije u temi i da pises PHP servlet-e.
...
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+709 Profil

icon Re: Arhitektura PHP aplikacije30.12.2015. u 09:21 - pre 63 meseci
Citat:
Nemke_BG
Definicija klase i instanca klase nisu ni u PHP-u a ni u jednom drugom jeziku ista stvar.

Ne znam šta tačno podrazumevaš pod "definicijom" klase. Klasa je samo "mustra" za kreiranje instanci. Klasa negde može biti definisana, sors kodom od A do Š, ali i ne mora, može se i dinamički kreirati (u nekim jezicima teže, u nekim lakše) i menjati u toku rada programa, kao što se kreiraju i objekti. Dinamički jezici (a valjda je i PHP dinamički tipiziran) nude nam mogućnost da ne moramo baš sve da definišemo unapred. :)
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1074
82.208.251.*



+213 Profil

icon Re: Arhitektura PHP aplikacije30.12.2015. u 11:00 - pre 63 meseci
Jablan, evo jedno fino objasnjenje sta je klasa tj definicija klase a sta objekat.
Citat:
Think about classes, instances, and instantiation like baking a cake. A class is like a recipe for chocolate cake. The recipe itself is not a cake. You can't eat the recipe (or at least wouldn't want to). If you correctly do what the recipe tells you to do (instantiate it) then you have an edible cake. That edible cake is an instance of the chocolate cake class.


Svejedno da li je ona unapred definisana ili se dinamicki kreira ili se naknadno doradjuje razlika izmedju klase i objekata je uvek ista.
Kazes " I klasa može da ima život". Ne bih rekao da je menjanje klase njen zivot, menjas definicije. Kao sto mozes da menjas recept ali recept nije torta.

Recept ili cak knjiga recepata ne opterecuje nesto posebno kuhinju. Ono sto opterecuje kuhinju jesu posudje, mikser, jaja, secer, brasno, cokolada ...
Zamisli kada bi uzeo knjigu recepata i napravio sve iz te knjige. Od silnih torti i posudja ti na kraju ne bi ni video knjigu recepeta u kuhinji :)
Meni nije problem da mi tu pri ruci stoji recept uvek pa makar ga i ne koristio. Veci problem je to posudje i sirovine i samo vreme izrade torte.
I onda se neko zakaci sta ce mi recept ako sam ga vec jednom procitao. Tu mi je, ne smeta mi, ne opterecuje me, necu da mislim o tome gde je ako mi slucajno zatreba.
Jos ako neko uzme recept... ovako je u kuhinji na svom mestu svima dostupan i svi znamo gde je i svi znamo da postoji i ne treba da ga trazimo.
Pa cak svaki FW uradi include svih fajlova i svih klasa i posle samo koristis new. Ne znam zasto bi nekom smetalo sto sam ja na primeru tako uradio kako rade svi FW.
Ne kazem da nije bolje raditi include onoga sto ti zaista treba ali eto svi FW koje znam se se odlucili da ipak urade include svih klasa iako se 99% ne koristi u vecini slucajeva.
To je kao kada hoces da pripremis kajganu a nemas ni tiganj i sporet a ti trazis dlaku u jajetu. Promasuje se sustina.

"A class is a blueprint which you use to create objects. An object is an instance of a class - it's a concrete 'thing' that you made using a specific class. So, 'object' and 'instance' are the same thing, but the word 'instance' indicates the relationship of an object to its class."

Mislim da mi treba da pricamo o objektima a ne o klasama.
Tebe zanima da jedna te ista torta postoji za vise korisnika jer bez obzira na isti recept tesko je napraviti dve 100% identicne torte i pitas se zasto bi pravio dve identicne torte kada vec imas jedu. I dobro se pitas i ima nesto u tome. Jedino ako to vreme izrade torte ne predstavlja problem onda nije problem svaki put praviti tortu iz pocetka. Glupo i nepotrebno i upravu si ali niko to ne oseti nesto narocito.
Recept nije problem podeliti niti zahteva neke resurse i vreme vec je problem kako koristiti tu jednu tortu a ne bespotrebno praviti njene duplikate.


[Ovu poruku je menjao VladaSu dana 1.01.2016. u 12:17 GMT+1]

[Ovu poruku je menjao VladaSu dana 30.12.2015. u 12:30 GMT+1]
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

plus_minus

Član broj: 289459
Poruke: 2242
*.dynamic.isp.telekom.rs.

Sajt: https://hardcoder.xyz


+2246 Profil

icon Re: Arhitektura PHP aplikacije30.12.2015. u 13:24 - pre 63 meseci
Citat:
Nemke_BG:
@plus_minus
Zasto bi pa serijalizacija cuvala metode? Ona cuva interno stanje objekta (stanja varijabli, ime klase i slicno) i onda kad unserializujes ona instancira tu klasu i ti imas opet iste metode.

I smanji molim te malo kolicinu teksta koji pises, naporno je citati romane :)


Zašto bi parkirao kompletan auto u garažu kad možeš motor da mu izvadiš i zaboraviš taj motor negde? Šta će ti motor?
Da smanjim količinu teksta? Ne mogu, jer, eto, ne postoje varijable unutar klase, nego svojstva.

about:networking
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+709 Profil

icon Re: Arhitektura PHP aplikacije30.12.2015. u 13:48 - pre 63 meseci
Citat:
VladaSu:
Mislim da mi treba da pricamo o objektima a ne o klasama.

Izvini, možda sam te zbunio, pošto su u nekim jezicima klase takođe objekti (tvoj primer je dobar, dakle i recept je moguće menjati). Sve to u dinamičkim jezicima može da se dešava u rantajmu, tj. u toku rada aplikacije.

Citat:
Jedino ako to vreme izrade torte ne predstavlja problem onda nije problem svaki put praviti tortu iz pocetka. Glupo i nepotrebno i upravu si ali niko to ne oseti nesto narocito.

Da, sa aspekta performansi aplikacije. Ali to nije jedini aspekt od značaja. Bitno je i vreme izrade programa, količina boilerplate koda (serijalizacija, deserijalizacija, sinhronizacija između paralelnih zahteva itd), pouzdanost toga što dobiješ na kraju (jer unosiš još igrača - keš, baza, itd u igru), troškovi održavanja itd. Ali hajd da ne širimo sad priču...
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1074
*.ptt.rs.



+213 Profil

icon Re: Arhitektura PHP aplikacije30.12.2015. u 13:58 - pre 63 meseci
Da, da. Upravu si. Nema tako nesto u PHP da klada bude shared :) Moze se i u PHP u runtime dodati neka metoda, izmeniti, izbrisati. Ali to je vise menjanje recepta u toku pravljenja torte.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

Mister Big Time
The Consigliere
enterparadajz
Belgrade

Član broj: 15306
Poruke: 4747

Sajt: www.go2bed.net


+43 Profil

icon Re: Arhitektura PHP aplikacije26.02.2016. u 01:19 - pre 61 meseci
Citat:
jablan:
Poslednji put kad sam aktivno radio sa PHP-om (ima tome skoro 15 godina), nije bilo klasa, nije bilo frejmvorka i sve što se dešavalo dešavalo se u scope-u jednog requesta.

Znam da se u međuvremenu dosta toga promenilo, pokušavam sad da izguglam kako danas sve to funkcioniše, ali ne uspevam. Google: "php process architecture" i slične pretrage ne daju ništa korisno.

Dakle, kada se učitavaju npr. model klase u PHP-u? Da li se čuvaju između requestova ili se uvek iznova učitavaju? U kom procesu žive? Kako se npr. čuvaju singleton instance? Itd.


Mnogo se toga promenilo od tada. Probaj PhalconPHP ako nemas vremena na ruke da se 'igras'. Primenom mnogih dobrih koncepata tipa IoC / DI moze mnogo lepse sve da bude.

Npr. za asinhronu komunikaciju izmedju PHP procesa ja koristim MessageBroker server (RabbitMQ ili Beanstalk koji je mnogo prostoji in memory MQ). Prvi program nesto odradi - spakuje sve to u poruke za drugi proces/program, koji preko MQ pokupi poruke i odradi sta treba u pozadini na-te-nane.

Kolege su vec dosta toga napisali, da se ne ponavljam dodacu samo ono sto smatram da fali.

Mislim da treba istaci osnovno ogranicenje HTTP protokola koje postoji od vajkada - to je stateless protokol. Svi se nekako trude da to zaborave ali ne ide, uz sve tehnike i resenja da se 'nabudzi' da bude statefull.

Opcode cache je nesto najbolje sto se desilo pre koju godinu u PHP svetu, a zatim sada i PHP7. Kao i resenja tipa PhalconPHP kojima nista ne moze prici ni blizu po performansama.

Npr. ja sam napravio sopstvenu implementaciju ORM lejera (modeli). Nisam siguran da bi u bilo kom drugom prog. jeziku tako nesto bilo uopste i moguce. Instanciras model koji ima samo definiciju (naziv klase modela = naziv tabele u bazi). To naravno je normalno u svakom ORM-u. Ali nacin implementacije base model-a koji hendluje sve to je vrlo zanimljiv i nadasve dinamicki.

Laku noc


 
Odgovor na temu

[es] :: PHP :: Arhitektura PHP aplikacije

Strane: 1 2

[ Pregleda: 7496 | Odgovora: 34 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.