2011-02-01 3 views
1


У меня есть блок на моем сайте, который показывает последние 20 элементов в таблице базы данных.
Теперь мне нужно создать массив или объект для хранения в памяти, а затем получить доступ к нему для всех пользователей, просматривающих мой сайт? Могу ли я сделать это с помощью PHP?Как создать общий объект в памяти с помощью PHP?

Спасибо за вашу помощь

+0

у вас есть уже. этот объект называется «кешем запроса» и находится в памяти демона DB –

+0

Мне не нравится доступ к базе данных! и, как я сказал вам, я собираюсь получить последние 20 предметов, которые будут меняться каждый момент. поэтому я хочу избежать доступа к БД и сделать накладные расходы на это – Alaa

+3

Это не имеет никакого смысла. Выше Alaa говорит, что он меняет «каждый момент», но ниже они говорят, что кеш будет обновляться из базы данных, по-видимому, «каждый момент» ... так почему бы просто не запросить базу данных напрямую, а затем пропустить посредника? Если это уже огромное приложение с тысячами хитов, а накладные расходы БД - заметное перетаскивание вещей, это пахнет преждевременной оптимизацией. – Andrew

ответ

1


Спасибо за ваши вклады.
Я нашел способ сделать это.
Альтернативный кэш PHP (APC) - это бесплатный и открытый кеш-код для PHP. Его цель - обеспечить основу для кэширования.
попробуйте этот код и обновите страницу или открыть его с помощью различных браузеров

 
<?php 
if (apc_exists('test')) 
    echo apc_fetch('test'); 
else{ 
    echo "Just Created "; 
    apc_store("test",time(),6666); 
    echo apc_fetch('test'); 
} 
?> 
2

Посмотрите на варианты, как APC или кэше, или WinCache, если вы находитесь на сервере Windows. Все они предоставляют опции для кэширования данных/объектов.

Если это, чтобы показать последние пункты на базе данных, вам необходимо обновить его каждый раз, когда что-то добавляется к этой базе данных, в противном случае она не будет соответствовать базе данных

+0

уверен, что я его обновлю ,,, Я использую drupal на своем веб-сайте, и поэтому я буду обновлять этот объект с помощью nodeapi при вводе времени Кстати ... мой сервер Linux CENTOS – Alaa

0

PHP является лицом без гражданства, так невозможно легко разделить переменную между различными сеансами. Вы можете сделать это одним фокусом. Создать массив все это значения, Теперь сериализовать массив $sharedObj = serialize ($originalArray) ; вы можете получить сериализации переменных вашего $originalArray в $sharedObject Написать $sharedObject в текстовом файл, и вы можете прочитать текстовый файл и десериализируетесь, что данные (которые вы получаете от текстовый файл), и вы можете получить тот же массив.

Пожалуйста, дайте мне знать, если у вас все еще есть проблемы.

+1

Вопрос в настоящее время, делает ли файловая система иметь больше накладных расходов, чем БД? – Andrew

+0

@Andrew: Действительно, прежде чем мы отправились в «memcached», для этого мы использовали небольшой ramzdisk - именно потому, что диски были слишком медленными. Тем не менее, это был «10k + одновременный пользователь». – Piskvor

+0

Это звучит не очень хорошая идея. Я бы подумал, что оба запроса БД и memcached будут быстрее, чем многократно: 1) запись и 2) чтение файловой системы. – Andrew

Смежные вопросы