Как бы я сделал это в php? - PullRequest
0 голосов
/ 27 ноября 2009

Я внедряю memcache для кэширования результатов запроса mysql.

Цикл через результаты MySQL, используя

while($rowP3= mysql_fetch_array($result3)) { 

или он зацикливается на результатах memcached (если они сохранены в memcache и не просрочены) через

foreach($cch_active_users_final as $rowP3) {

Это, наверное, то, что действительно очевидно ... но я не понимаю.

Как мне заставить его показать правильный метод зацикливания, основанный на том, существует ли значение memcached или нет. Я просто хочу выбрать правильный метод зацикливания. Я мог бы просто скопировать всю функцию while {} со всем ее содержимым, но я не хочу повторять этот огромный кусок кода, просто чтобы я мог изменить время на foreach

Какие-нибудь советы?

Ответы [ 4 ]

2 голосов
/ 27 ноября 2009

Логика должна выглядеть примерно так:

(частичный псевдокод)

$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
1 голос
/ 27 ноября 2009

Если я понимаю ваш вопрос, этот код не имеет смысла. После запроса к базе данных сравнение запрашиваемых результатов с кэшированными значениями не имеет смысла.

0 голосов
/ 27 ноября 2009

Если значения $ row и $ rowP3 содержат одни и те же данные, вы можете иметь все, что происходит в циклах функции, и передавать строку в качестве аргумента.

0 голосов
/ 27 ноября 2009

Вы не используете, вы используете унифицированный метод с использованием PDO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...