[PHP] Вопрос по apc_add

Печать RSS
402

Автор
Оранжевые штаны
0
Всем привет!
Требуется складывать в хранилище значения(ассоциативные массивы, не объекты).
Так вот в мануале вообще нет примеров как им пользоваться, только примеры которые повторяют apc_store(), но мне нужно именно добавлять в хранилище новые массивы с временем жизни массива в хранилище.
Я пытаюсь ложить так
На входе $items содержит список массивов

foreach ($items as $item) {
   apc_add('category_items', $item, $item['leftTime']);
}
Все отрабатывает нормально, каждый массив живет минимум 1 мин, запускаю скрипт еще раз, пытаюсь получить из хранилища кеш вот так
$items = apc_fetch('category_items');
И получаю только один самый первый массив который туда был положен..
Гугл перерыл, но не нашел как пользоваться apc_add().
Кто то может поделиться опытом?
Изменил: Антон (14.12.2014 / 23:36)

Пацак
0
WmLiM (14 Декабря 2014 / 23:34)
Всем привет!
Требуется складывать в хранилище значения(ассоциативные массивы, не объекты).
Так вот в мануале вообще нет примеров как им пользоваться, только примеры которые повторяют apc_store(), но мне нужно именно добавлять в хранилище новые массивы с временем жизни массива в хранилище.
Я пытаюсь ложить так
На входе $items содержит список массивов

foreach ($items as $item) {
   apc_add('category_items', $item, $item['leftTime']);
}
Все отрабатывает нормально, каждый массив живет минимум 1 мин, запускаю скрипт еще раз, пытаюсь получить из хранилища кеш вот так
$items = apc_fetch('category_items');
И получаю только один самый первый массив который туда был положен..
Гугл перерыл, но не нашел как пользоваться apc_add().
Кто то может поделиться опытом?
так само собой))) у тебя ключ то одинаковый на все массивы вот он и перезаписывает)))
Автор
Оранжевые штаны
0
2. KpuTuK, блин, я думал первое значение это имя хранилища куда складываются данные... как быть тогда.

Добавлено через 07:23 сек.
2. KpuTuK, он не перезаписывает, это написано в мане, только вот не разобрал что там нельзя сделать так как мне надо. Придется дописывать сравнение времени и удаление массива если время хранения истекло((

Пацак
0
WmLiM (15 Декабря 2014 / 00:24)
2. KpuTuK, блин, я думал первое значение это имя хранилища куда складываются данные... как быть тогда.
приведи пример массива $items))
Конечно если имена известны то можно
foreach ($items as $item) {
apc_add('items_'. $item['name'], $item, $item['leftTime']);
}
ну или же просто скопом все категории
apc_add('category_items', $items, 'время');
ну и соответственно
$items = apc_fetch('category_items');

Добавлено через 02:15 сек.
http://php.net/manual/ru/function.apc-store.php ?
Автор
Оранжевые штаны
0
4. KpuTuK, вот имена как раз и не известны, я хотел сделать так чтобы каждый массив находился в определённом контейнере, из которого удалился бы через время которое ему выделили.
Придётся дописать проверку контейнера на предмет устаревших массивов,больше ничего не могу придумать..
Автор
Оранжевые штаны
0
А вообще можно получить доступ к кешу который был создан в одном скрипте из другого?
В

Кодер
0
6. WmLiM, да
Автор
Оранжевые штаны
0
7. byvlad, спасибо, значит я где-то ошибся.
Автор
Оранжевые штаны
0
А в другом скрипте чтобы получить данные из кеша так же надо использовать apc_fetch(key)?
Автор
Оранжевые штаны
0
Не могу понять что я не так делаю...
Ложу в одном скрипте массив с пометкой через сколько удалить
apc_store('item', $item, 600);
Тут же загружаю другой скрипт где пытаюсь вытащить массив
$item = apc_fetch('item');
В $item получаю false, не могу понять как достать кеш положенный в хранилище в другом скрипте..
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск