Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Szybkość i efektywność dostępu do danych w php, ... czyli jak utrzymać otwarte API dalej otwartym?
janlgorski
post 25.05.2013, 07:01:17
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.10.2012

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


1. Mam otwartą część serwisu (Access-Control-Allow-Origin: *), która zwraca przez ajax pewne szybko zmieniające się wartości (kilka liczb, format json). Jak najefektywniej zaprojektować dostęp do danych, zakładając, że skrypt będzie wykonywany z dużą częstością przez zewnętrznych użytkowników?

Całość przechowywanych danych ma 10kB.

1. mySQL - nawiązanie połączenia i pobranie pojedynczej wartości ( to jest chyba nieefektywne, zwłaszcza nawiązanie połączenia)
2. pliki txt - nie jestem pewien jak efektywne jest otworzenie/zamknięcie pliku?
3. tworzenie pliku php przez php i 'include' nowo utworzonego pliku z wyliczonymi wartościami w formie tablic.
4. Dopisanie tablicy wartości bezpośrednio do wywoływanego pliku php, bez 'include'.
5. inna opcja, której nie wziąłem pod uwagę.

Moim celem jest nie tyle redukcja transferu serwer - klient, co optymalizacja użycia procesora na serwerze.
Pytam, ponieważ pojawiły się zewnętrzne skrypty, które wywołują mój kod z dużą częstością i zaczynam to widzieć na moich limitach użycia procesora. A nie chciałbym zamykać otwartego API, do tej pory używanego przez 'normalnych' użytkowników do dołączania widgetu na stronie.
Go to the top of the page
+Quote Post
ano
post 25.05.2013, 08:41:21
Post #2





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

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


Przechowuj dane w Redis'ie/memcached.
Np w przypadku Redisa dla marnej klasy serwera daje on wydajność na poziomie > 40.000 req/s.
Wtedy wąskim gardłem będzie Twoj aplikacja PHP która pewnie obsługuje 400req/s.


--------------------
Linkedin | ...
Go to the top of the page
+Quote Post
janlgorski
post 25.05.2013, 08:55:28
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.10.2012

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


Fajny pomysł, ale na hostingu dzielonym nie mam tych modułów zainstalowanych. Chciałbym skorzystać z dostępnego rozwiązania.
Go to the top of the page
+Quote Post
Crozin
post 25.05.2013, 09:14:17
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Jeżeli na serwerze masz dostęp do APC czy innego akceleratora, który pozwala na przechowywanie "skompilowanego" kodu PHP cały czas w pamięci zapisanie danych do pliku w formie PHP-owskiej tablicy będzie jednym z szybszych rozwiązań:
  1. #dane.php
  2.  
  3. return array(...);
  4.  
  5. #plik.php
  6.  
  7. $data = require 'dane.php';
Jednak tutaj największe obciążenie generuje zapewne sama obsługa żądań HTTP, może masz możliwość skorzystania z WebSockets? W znacznym stopniu skróciłbyś wtedy opóźnienia na linii serwer -> klient oraz ograniczył pracę procesora. Jeżeli zależy Ci na wysokiej kompatybilności ze starszymi przeglądarkami, zawsze możesz utworzyć dwa punkty wejścia do Twojego API: pierwsze, preferowane, wykorzystujące WS; drugie, zapasowe, oparte na AJAX-ie.
Go to the top of the page
+Quote Post
janlgorski
post 25.05.2013, 09:30:39
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.10.2012

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


Niestety nie mam (hosting dzielony). Czyli korzystając z dostępnych narzędzi 'include' z tablicą tworzoną dynamicznie jest najlepszym rozwiązaniem?

Użytkownik końcowy - webmaster, generuje sobie 'widget', który wkleja na stronie lub blogu. Widget ten za pomocą skryptu js pyta serwer o odpowiedź. Ale są już osoby, które z mojego mechanizmu korzystają w sposób przeze mnie nie przewidziany i niejako nie autoryzowany.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 08:22