Witam,

form.php
  1. (...)<form action="savemessage.php" method="post">
  2. <textarea class="editbox" cols="23" rows="3" name="message"></textarea>
  3. <input id="but" name="" type="submit" value="POST" />
  4. </form>
  5. </li>
  6. <?php
  7. include("db.php");
  8.  
  9. $memcache = new Memcache;
  10. $memcache->connect('127.0.0.1', 11211) or die ("Could not connect");
  11.  
  12. $key = md5($row[0].$row[1]);
  13.  
  14. $get_result = array();
  15. $get_result = $memcache->get($key);
  16.  
  17. if ($get_result) {
  18. echo "Retrieved From Cache\n";
  19. $id=$get_result['msg_id'];
  20. $msgcontent=$get_result['message'];
  21. (...)}
  22. else {
  23. $query="SELECT * FROM messages ORDER BY msg_id DESC";
  24. $result = mysql_query($query) or die ("Could not connect: ".mysql_error());
  25. while($messagecount=mysql_fetch_array($result))
  26. {
  27. echo "Retrieved from the Database\n";
  28. $id=$messagecount['msg_id'];
  29. $msgcontent=$messagecount['message'];
  30. $memcache->set($key, $messagecount, MEMCACHE_COMPRESSED, 20);
  31. (...)
  32. }(...)


savemessage.php
  1. <?php
  2. include("db.php");
  3. $msgcon=$_POST['message'];
  4.  
  5. mysql_query("INSERT INTO messages (message) VALUES ('$msgcon')");
  6.  
  7. header("location: form.php");
  8. ?>


Wczoraj do wieczora siedziałem i nie mogę sobie poradzić. Wpisuje w form.php słowo test zapisuje się w bazie wraca do form.php i sprawdzany jest cache pod kątem wystapienia klucza md5(msg_id.message). Którego nie ma($get_result=false), więc przechodzi do else wykonuje select i dodaje do memcache w/w klucz i powiązaną z nim wartość w postaci msg_id.message. Wpisuje w formularz post nowy ciąg znaków np. test2 przechodzi on ten sam proces co test ale po dodaniu go do pamięci cache i bazy, odświeżenie przeglądarki daje zawsze "test Retrieved From Cache" dlaczego nie test2 ? Jak zmienie w form.php w else w select'cie DESC na ASC to jest ok, zawsze z cache przywraca ostatnią wiadomość, ale widzę, że wartość klucza nie ma wpływu na powiązana z nim wartość, coś jest nie tak. Jest np. taka sytuacja że, wpisuje "test" nastepnie "test2" w formularzu form.php, odświeżam i wartości to row[0] oraz row[1]: 68test2 a ze zmiennej $get_result otrzymuje: 66test no a klucz md5(68test2) powinien być powiązany z wartością 68test2 a wygląda na to, że jest taki wpis w memcache: md5(68test2)-66test, więc robię jakiś błąd. Czy mogłby ktoś wskazać mi gdzie leży problem ?