Mam problem z wyborem optymalnego rozwiązania dla mojej aplikacji internetowej, która uzyskuje dostęp (głównie czytając) wielokrotnie te same dane użytkownika w każdej sesji.mysql pdo transakcja i przechowywanie sesji
Czy powinienem pobrać wszystkie dane użytkownika naraz (około 40 pól) do $ _SESSION podczas otwierania nowej sesji lub czy powinienem utrzymywać stałe połączenie PDO (mysql) i wyszukiwać tylko te parametry, których potrzebuję z bazy danych przy każdym wykonaniu skryptu zamiast?
TAKŻE:
Czy istnieje duża różnica w wydajności pomiędzy odczyt/aktualizowania wielu dziedzinach na raz (pokojowe kwerendy niestandardowej) lub jeden po drugim (z kombinacji niestandardowych zapytań ogólnych) w ta sama transakcja? na przykład
$dbh = new PDO("mysql:host=localhost;dbname",$dbuser,$dbpass,array(PDO::ATTR_PERSISTENT => true));
$fieldlist='';
foreach ($fields as $i=>$field){
$fieldlist.=$field['name'].':field'.$i.',';
}
rtrim($fieldlist,',');
$dbh->prepare("UPDATE user SET ".$fieldlist." WHERE name=:name");
foreach ($fields as $i=>$field){
$stmt->bindValue(':field'.$i, $field['value'], PDO::PARAM_STR);
}
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->execute();
$dbh = null;
vs.
$dbh = new PDO("mysql:host=localhost;dbname",$dbuser,$dbpass,array(PDO::ATTR_PERSISTENT => true));
$dbh->beginTransaction();
foreach($fields as $field){
$stmt=$dbh->prepare("UPDATE user SET ".$field['name']."=:field WHERE name=:name");
$stmt->bindValue(':field', $field['value'], PDO::PARAM_STR);
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->execute();
}
$dbh->commit();
$dbh = null;
Nie można serializować zasobu połączenia z bazą danych w sesję. Powiedziałbym, że to rozstrzygnie tę debatę. – deceze