Странная проблема с cache_get()

Главные вкладки

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 7 апреля 2010 в 10:19

Меня не устроил базовый модуль с imagex и я решил его немного допилить. Для этого я сделал промежуточнуб форму, где ввожу поле с маской заголовка для закачиваемых файлов (так я решаю косяк с кириллицей + переименовываю все файлы по маске), определяю все значения CCK полей и таксономии. Так вот, результат выполнения формы я записываю в кеш -

function image_mass_upload_form_submit($form, &$form_state){
global $user;

//Транслитерированное название шаблона
$filename->transliterated = transliteration_get($form_state['values']['file_name_pattern']);
$filename->pattern = $form_state['values']['file_name_pattern'];
//Сохраняем введенные значения полей
$filename->values = $form_state['values'];
//Если есть теги, то добавляем их в объект
if('tags'){
$filename->tags = $form_state['values']['tags'];
}

//установка данных
$cache_life_time = time() + 90000; //15 минут
$cache_id = 'image_mass_upload:'.$user->uid;
cache_set($cache_id, $filename, 'cache_form',$cache_life_time);

//Переадресация на страницу мульти - загрузки файлов
$form_state['redirect'] = 'image_mass_upload/image_mass_upload';
}

Потом в форме функции image_mass_upload_upload_image() я его извлекаю и использую для переименования файлов и задания им атрибутов (ССК + таксонимия).

$cached_data = cache_get($cache_id, 'cache_form');
$content = $cached_data->data;
if(empty($content)){
$uploaded = 3;
}

Все бы ничего, но вот только кеш возврящается раз через раз... Ошибок в логах я не нашел, пробовал на трех разных машинах, везде одно и тоже... При этом на разных машинах у меня применяются хранилища с InnoDB и MyISAM. Похоже, это не влияет на ошибку...

Может кто сталкивался, подскажите плз, как решили?

Комментарии

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 7 апреля 2010 в 17:45

Сделал workaround, вместе cache_get() поставил следующий код:

<?php
$cache_id 
'image_mass_upload:'.$user->uid
$result db_fetch_object(db_query("SELECT data FROM cache_form WHERE cid ='%s' AND expire > ".(time()-300), $cache_id));
$content unserialize(db_decode_blob($result->data));
?>

Теперь все работает.
В чем конкретно дело, я не стал разбираться, но косяк имеет место быть...

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 8 апреля 2010 в 10:11

Нет, косяк оказался связан с java скриптом и плохим коннектом (не загружались файлики), т.о. проблема с работой функции cache_get() осталась...