Mam taki skrypt, który co kilka sekund łączy się z bazą MySQL w celu zapisu/odczytu danych. Wykorzystuje w tym celu bibliotekę PDO. Całość działa, ale...
Załóżmy, że ilość zapytań do serwera zwiększyła się. Czyli częściej odczytuję/zapisuję.
Jak obejść konieczność każdorazowego tworzenia nowego obiektu klasy PDO? Czytałem o PDO::ATTR_PERSISTENT, tylko tak nie do końca to działa. Jest jakiś inny sposób w PHP? Gdzie w ogóle trzymana jest informacja o połączeniu? W cookies, czy po stronie serwera (zmienna sesyjna lub coś podobnego)?
Najprościej to zrobić skrypt który będzie działał non stop (jako proces) i na niego kierować zapytania.
Jak obejść konieczność każdorazowego tworzenia nowego obiektu klasy PDO?
Hmm, ale w jakim celu?
Pytanie, czy to jest "zgodne ze sztuką", by za każdym razem tworzyć taki obiekt?
Może pokaż kod. Pytanie jak masz zrobione to łączenie "co kilka sekund". Sam obiekt to tak mały narzut, że gra raczej nie jest warta świeczki.
@kosmonauta80: pytanie raczej co znaczy "co kilka" sekund. Jeżeli wykonujesz je co kilka sekund to sugeruje "krótkie i proste" zapytania i raczej powinieneś iść "w drugą" stronę. Przykładowo - masz max limit połączeń do bazy w liczbie 100 i co... 100 osób wejdzie na stronę (z czego 30 pójdzie sobie gdzieś ale nie zamknie przeglądarki) i lipa... nikt więcej nie "odpyta" serwera bo wywali błędem :)
Jeżeli martwi Cię wydajność to przeczytaj sobie:
https://mysqlserverteam.com/mysql-connection-handling-and-scaling/
Zacytuję kawałek:
"A short lived connection is a connection that is only open for a short period of time. This is typically the case for PHP applications, the client opens a connection, executes a simple query, and then closes the connection. Due to its architecture, MySQL is really good at accepting new connections at a high speed, up to 80.000 connects/disconnects per second as shown in Figure 4 below."
singletona zrob
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.