NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: PHP- PDO

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
dusecladre
Člen
Avatar
dusecladre:22.5.2015 23:00

Zdravim, narazil som na takyto problem, mam urobenu triedu pre pripojenie do databazi dal som tam prenamentne pripojenie a tu vznika problem ak si prechadzam stranku tak pri netstat -a vidim ze sa vytvaraju postupne viacero pernamentnych pripojeni tak sa pytam pernametne pripojenie plati iba 1 pre jeden php subor alebo ako kedze sa to vytvara stale ako keby nove.

 
Odpovědět
22.5.2015 23:00
Avatar
Lukáš Červený:23.5.2015 22:22

Ani jednou jsi nenapsal správně slovo "permanentní"...
Pokud ti přibývají připojení při prohlížení stránky, zřejmě jich v aplikaci vytváříš víc než jedno. Dej si na to pozor. Stačí ti jedno pro celou aplikaci. Nevím, jak jsi v PHP zběhlý, ale měl bys objektům všech tříd, které potřebují připojení k databázi, předávat objekt toho připojení pomocí dependency injection.
Jinak se podívej sem:
http://stackoverflow.com/…-to-database
a sem:
http://stackoverflow.com/…t-connection

 
Nahoru Odpovědět
23.5.2015 22:22
Avatar
Odpovídá na dusecladre
Uživatel sítě :23.5.2015 23:25

Pokud se připojíš v nějaké hlavním souboru kam přidáváš externí obsah a v nich provádíš pouze dotazy, tak připojení provedeš pouze jednou..

Záleží, jakou máš strukturu appky a jak se připojuješ v jednotlivých oddílech(Resp. jak ho provádíš)..

Nahoru Odpovědět
23.5.2015 23:25
Chybami se člověk učí, běžte se učit jinam!
Avatar
Lukáš Červený:24.5.2015 14:02

Prosím mínuskáře, aby mi opravil můj komentář. Rád se učím věci správně a pokud jsem radil špatně, chtěl bych, prosím, vědět, jak je to má být.
Stejně tak nechápu, proč dostal mínus tazatel.

 
Nahoru Odpovědět
24.5.2015 14:02
Avatar
Odpovídá na Lukáš Červený
Neaktivní uživatel:24.5.2015 14:09

To je zde normální :)

Pro tazatele:
Můžeš popsat strukturu své aplikace?
Nejspíše napojuješ souhlas s připojením více x.

Editováno 24.5.2015 14:10
Nahoru Odpovědět
24.5.2015 14:09
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:24.5.2015 14:17

Hmm zapla se mi nejaka divna autokorekce....
souhlas = soubor

Editováno 24.5.2015 14:17
Nahoru Odpovědět
24.5.2015 14:17
Neaktivní uživatelský účet
Avatar
Odpovídá na dusecladre
Dominik Klapuch:24.5.2015 16:22

Jak bylo již uvedeno, je dobré pracovat pouze s jednou instancí, kde sis vytvořil připojení k databázi, několik duplicitních jich není potřeba.

Nejlepší způsob je použít Dependency Injection přes konstruktor, kdy můžeš měnit danou implementaci za běhu, méně dobrý způsob je poté pomocí statiky.

Pokud v PDO používáš něco jako PDO::ATTR_PER­SISTENT => true, znamená to, že se ti připojení po ukončení skriptu nebude zavírat, ale je cachováno a znovu použito při skiptu novém. Přístup je poté mnohem rychlejší, ale přináší to také mnoho problémů.

Doporučji ti použít Cachegrind. Je to nástroj, díky kterému můžeš mimo jiné zkoumat počet volání dané metody a tam můžeš odhalit opětovné připojování k databázi.

Nahoru Odpovědět
24.5.2015 16:22
Kód a data patří k sobě.
Avatar
black_tino
Člen
Avatar
black_tino:4.6.2015 17:28

Schvalne som si vyskusal PDO::ATTR_PER­SISTENT => true a mozem povedat ze po testoch sa to spojenie sice nezavrie ale niekedy to vytvara duplicitne nove spojenie ktore sa tiez nezavru teda nieje to alebo to nefunguje spravne ako by malo. Lebo po volaniach z roznych pocitatcov skrypt ktory sa ma iba priprajat do databazi tak server vyrobil skoro pre kazde nove pripojenie nove pripojenie aj do databazi teda necachoval skoro nic. Preco to uz netusim.

 
Nahoru Odpovědět
4.6.2015 17:28
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.