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

Печать / RSS
0
1. Антон 14.12.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().
Кто то может поделиться опытом?
Изменил: Антон (14.12.2014 / 23:36)
0
2. Олег 14.12.2014 / 23:52
Землянин
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
3. Антон 15.12.2014 / 00:24
Оранжевые штаны
2. KpuTuK, блин, я думал первое значение это имя хранилища куда складываются данные... как быть тогда.

Добавлено через 07:23 сек.
2. KpuTuK, он не перезаписывает, это написано в мане, только вот не разобрал что там нельзя сделать так как мне надо. Придется дописывать сравнение времени и удаление массива если время хранения истекло((
0
4. Олег 15.12.2014 / 00:33
Землянин
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
5. Антон 15.12.2014 / 02:32
Оранжевые штаны
4. KpuTuK, вот имена как раз и не известны, я хотел сделать так чтобы каждый массив находился в определённом контейнере, из которого удалился бы через время которое ему выделили.
Придётся дописать проверку контейнера на предмет устаревших массивов,больше ничего не могу придумать..
0
6. Антон 15.12.2014 / 02:49
Оранжевые штаны
А вообще можно получить доступ к кешу который был создан в одном скрипте из другого?
0
7. Владислав 15.12.2014 / 03:16
Кодер
6. WmLiM, да
0
8. Антон 15.12.2014 / 06:03
Оранжевые штаны
7. byvlad, спасибо, значит я где-то ошибся.
0
9. Антон 15.12.2014 / 09:56
Оранжевые штаны
А в другом скрипте чтобы получить данные из кеша так же надо использовать apc_fetch(key)?
0
10. Антон 15.12.2014 / 11:47
Оранжевые штаны
Не могу понять что я не так делаю...
Ложу в одном скрипте массив с пометкой через сколько удалить
apc_store('item', $item, 600);

Тут же загружаю другой скрипт где пытаюсь вытащить массив
$item = apc_fetch('item');

В $item получаю false, не могу понять как достать кеш положенный в хранилище в другом скрипте..
Для выполнения действия необходимо авторизоваться!
Стикеры / Теги / Правила / Топ тем / Топ тем / Поиск