верно, проблема небольшая, но надеюсь, что кто-то может помочь.В основном мы используем memcache для кэширования некоторых наших запросов mysql, а затем сохраняем результаты в массиве для memcache.Затем, когда запрос выполняется снова, он получает массив результатов из memcache и обрабатывает результаты, как обычно.Таким образом, код выглядит следующим образом.
$query = "SELECT x,y,z FROM a WHERE b = 3";
$result = mysql_query_run($query,'memcache_name');
while($row = mysql_mem_fetch_array($result,'memcache_name')) {
//do processing
}
mysql_query_run в основном просто выполняет запрос или возвращает массив из memcache.Mysql_mem_fetch_array либо обрабатывает результаты из mysql, либо пересекает массив.
Этот элемент использует этот код.
if(is_array($result)) {
$return = current($result);
//get the current result - based on the internal pointer
next($result);//increment pointed
return $return;//return result
}
else {
//mysql result tab
//so get the array from the mysql_fetch_array
$array = mysql_fetch_array($result);
if(is_array($MEMCACHE_SERVER_RESULTS[$memcache])==false) {
//if there is no results then just set the results as array
$MEMCACHE_SERVER_RESULTS[$memcache] = array();
}
//push the array onto the end of the current array - from memcache
//if there are some results then push them on
if($single_row == 1) {
//only one row so just combine the 2 steps and store
array_push($MEMCACHE_SERVER_RESULTS[$memcache],$array);
$MEMCACHE_SERVER->set($memcache, $MEMCACHE_SERVER_RESULTS[$memcache],0,$memcache_time);
}
else if($array!==false) {
array_push($MEMCACHE_SERVER_RESULTS[$memcache],$array);
//and set it
}
else {
//set the memcache to the array that it has been making.
$MEMCACHE_SERVER->set($memcache, $MEMCACHE_SERVER_RESULTS[$memcache],0,$memcache_time);
}
//return array
return $array;
}
Проблема заключается в текущей и следующей командах - в больших массивах (которыеочень редко) это вызывает некоторое зависание.В настоящее время мы находимся в php версии 5.1.6, и мы собираемся к 5.3, проблема будет решена?Или есть лучший способ обработать массив?Спасибо за вашу помощь.Ричард