Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Zasada działania obiektowości w php
kobr
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.12.2007

Ostrzeżenie: (0%)
-----


Witam, w php nie programowałem jeszcze obiektowo, ale miałem już z tym do czynienia w c++. Jestem w trakcie pisania gry internetowej (coś jak rd lub ogame ale o wiele bardziej rozbudowanej) Mając jednak uwagę nad wydajnością gry oraz uporządkowanie całego kodu, zastanawiam się jak tą grę pisać obiektowo czy strukturalnie.

Pisząc strukturalnie wszystkie funkcje raczej były by od razu w pamięci serwera i będą wykonywane od razu po odwołaniu się do nich, (więc wydaje się to szybkie oraz wydajne, lecz przy dużej ilości kodu miałbym problemy z ogarnięciem całości)

Natomiast pisząc obiektowo w pamięci będę miał opisy tych klas, ale jak to wszystko będzie wykonywane? Jeśli mam coś takiego:

class A

class B extend class A

class C extend class A

i w pewnym miejscu tworzę obiekt klasy C to jak on jest tworzony fizycznie?? Tworzą się obiekty tych wszystkich klas?? Jaka jest mniej więcej wydajność kodu pisanego obiektowo a strukturalnie? Licząc, że na serwerze będzie grało z 300 osób staram się, aby to było jak najbardziej wydajne i jak najmniej wykorzystujące serwer.

Macie może jakieś stronki dotyczące tego jak ten kod obiektowy jest wykonywany fizycznie, co kiedy jest tworzone??

Ten post edytował kobr 6.12.2007, 22:09:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Indeo
post
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

Ostrzeżenie: (0%)
-----


Myślę, że bez rozwiązań obiektowych i enkapsulacji poszczególnych funkcjonalności serwisu nie ogarniesz go. Masz rację, że kod strukturalny jest efektywny w działaniu ale ja osobiście unikam takiego rozwiązania. Wszystkie moje aplikacje od kilku lat funkcjonują jako jedna aplikacja. Rodzaj frameworka, który jest inicjowany tylko przy pierwszym uruchomieniu następnie jest przechowywany w sesjach. Kolejne żądania wysyłane przez użytkownika inicjują kolejne obiekty dołączane do głównej klasy frameworka. Z mojego doświadczenia wynika, że najwolniejsze mimo wszystko są operacje komunikacji z bazą danych. Mysql ma bardzo wolny zapis. Kilka następujących po sobie zapytań może zająć sporą część sekundy. Pisanie gry jest dużym wyzwaniem tym bardziej, że porównujesz się z ogame. Ja pisałem boty do traviana i w tym wypadku zwłaszcza skanując mapę musiałem zmierzyć się z wydajnością tej gry (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (pomijając obchodzenie zabezpieczeń).
To co mocno obciąża serwery gier to transfer - trzeba do minimum ograniczać ilość przesyłanych danych. Wydaje się nawet, że użycie AJAXA byłoby pod tym względem najbardziej oszczędne. (przesyłasz tylko dane a nie ich opakowania (html i css))


Skoro potrafisz dobrze programować w C++ może warto byłoby zastanowić się nad napisaniem programu kompilowanego - jako rozszerzenie php. Takie rozwiązanie napewno byłoby najbardziej efektywne. Ale nie pomogę Ci w tym, bo po prostu się nie znam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Znam tylko VB (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Nie bardzo rozumiem Twoje pytanie odnośnie fizycznej obsługi klas. Każdy z użytkowników wchodząc na stronę inicjowałby swoje własne instancje tych obiektów. 300 użytkowników - w pamięci serwera 300 obiektów klasy C. Musiałby jednak ktoś mądrzejszy sie wypowiedzieć .. .(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kobr
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.12.2007

Ostrzeżenie: (0%)
-----


No właśnie, jeśli każdy z użytkowników miałby swoje obiekty to pisanie takiego czegoś raczej nie ma sensu, pisząc strukturalnie również mogę zadbać o czytelność kod (tworząc pogrupowane funkcje w oddzielnych plikach) do tego by doszło na bieżąco pisanie dokumentacji tego. Mimo wszystko obiektowość to obiektowość
Cytat(Indeo @ 6.12.2007, 22:50:28 ) *
Skoro potrafisz dobrze programować w C++ może warto byłoby zastanowić się nad napisaniem programu kompilowanego - jako rozszerzenie php. Takie rozwiązanie napewno byłoby najbardziej efektywne. Ale nie pomogę Ci w tym, bo po prostu się nie znam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Znam tylko VB (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Co miałeś na myśli?
edit1
A przypadkiem nie jest tak że obiekt byłby tworzony po kliknięciu na jakiś link a następnie po wyslaniu kodu użytkownikowi wszystkie obiekty są kasowane??
edit2
Chyba wiem już o co chodzi ale do tego chyba muszę mieć dostęp do serwera. Nie jestem pewien czy dobrze myślę więc proszę abyś rozwiną swoją myśl

Ten post edytował kobr 6.12.2007, 23:41:06
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 06:56