Comment pourrais-je faire cela en php?
Question
J'implémente un memcache pour mettre en cache les résultats de la requête mysql.
Il parcourt les résultats mysql en utilisant
while($rowP3= mysql_fetch_array($result3)) {
ou il parcourt les résultats memcached (s’ils sont enregistrés dans memcache et n’expirent pas) via
foreach($cch_active_users_final as $rowP3) {
C’est probablement quelque chose qui est vraiment évident ... mais je ne l’ai pas compris.
Comment puis-je l’obtenir pour montrer la bonne méthode de boucle basée sur si la valeur memcached existe ou non. Je veux juste qu'il choisisse la bonne méthode de bouclage. Je pourrais simplement dupliquer la totalité de la fonction while {} avec tout son contenu, mais je ne veux pas répéter cet énorme morceau de code, juste pour pouvoir changer tout en attendant
Des conseils?
La solution
La logique devrait ressembler à quelque chose comme:
(pseudocode partiel)
$data = get_memcached_data('cch_active_users_final');
if (!$data) {
$query = mysql_query(..);
$data = array();
while($row = mysql_fetch_array()) {
$data[] = $row;
}
store_in_memcache('cch_active_users_final', $data);
}
// do whatever you want with $data
Autres conseils
Si je comprends votre question, ce code n’a aucun sens. Après avoir interrogé la base de données, comparer les résultats des requêtes aux valeurs en cache n’a aucun sens.
Si les valeurs $ row et $ rowP3 contiennent les mêmes données, vous pouvez avoir ce qui se passe dans les boucles d'une fonction et transmettre la ligne en tant qu'argument.
Vous n'utilisez pas, vous utilisez une méthode unifiée utilisant PDO.