Witam,

Zdaję sobie sprawę z tego, że rozwiązanie mojego problemu może być banalne, ale sam siedzę nad tym ponad godzinę i mnie nosi.

Panowie, mam coś takiego:
  1. <?php
  2. $memcache = new Memcache;
  3. $memcache->connect('localhost', 11211) or die ("Could not connect to memcache demon");
  4.  
  5.  
  6. $data = $memcache->get('10');
  7. if (empty($data)) {
  8. $data = 'coś tam coś tam';
  9. $memcache->add('10', $data, false, 30);
  10. }
  11. echo $data;
  12.  
  13. ?>


I mi nie działa. Zapisuję raczej poprawnie, ale ten odczyt jakby nie teges. Sam już nie wiem. Proszę o pomoc.

Przy okazji dążę do tego, że chcę cachować rekordy z MySQL.
Przykładowo mam taką strukturę:
id, name, value, long
I przykładowy rekord wyglądałby tak:
id = 1
name = inter
value = docs
long = 3.25

Chcąc to wykorzystać w moim skrypcie (po wcześniejszym fetch_array z MySQL) wystarczyłoby to poniżej?
  1. <?php
  2. $memcache = new Memcache;
  3. $memcache->connect('localhost', 11211) or die ("Could not connect to memcache demon");
  4.  
  5.  
  6. $data = $memcache->get($id);
  7. if (empty($data)) {
  8. $data = Array($name, $value, $long);
  9. $memcache->add($id', $data, false, 30);
  10. }
  11. echo 'Nazwa: '.$data[0].'Wartość: '.$data[1].'Długość: '.$data[2].;
  12.  
  13. ?>


Oczywiście będę wdzięczny za korektę w kodzie, bo już sam nie wiem, gdzie jest ten nieszczęsny błąd.

Pozdrawiam.

-----------------ROZWIĄZANE-----------------

Tak jak myślałem, problem jest błahy.
Z pomocą przyszedł przykład ze strony http://www.php.rk.edu.pl/w/p/php-i-memcached/

Wszystko działa idealnie w następującej postaci:

  1. <?php
  2. $memcache = new Memcache;
  3. $memcache->connect('localhost', 11211) or die ('Nie mogę się połączyć');
  4.  
  5. IF ($get_result = $memcache->get('key'))
  6. {
  7. $data = $get_result->int_attr;
  8. }else{
  9. $data = Array('id', 'nazwa', 'wartość');
  10. $tmp_object = new stdClass;
  11. $tmp_object->str_attr = 'test';
  12. $tmp_object->int_attr = $data;
  13.  
  14. $memcache->set('key', $tmp_object, false, 604800) or die ('Nie udało się zapisać elementu');
  15.  
  16. }
  17.  
  18. echo 'Nazwa: '.$data[0].' Wartość: '.$data[1].' Długość: '.$data[2];
  19. ?>


Dane się powinny trzymać cały tydzień.