form.php
(...)<form action="savemessage.php" method="post"> <textarea class="editbox" cols="23" rows="3" name="message"></textarea> <input id="but" name="" type="submit" value="POST" /> </form> </li> <?php include("db.php"); $memcache = new Memcache; $get_result = $memcache->get($key); if ($get_result) { $id=$get_result['msg_id']; $msgcontent=$get_result['message']; (...)} else { $query="SELECT * FROM messages ORDER BY msg_id DESC"; { $id=$messagecount['msg_id']; $msgcontent=$messagecount['message']; $memcache->set($key, $messagecount, MEMCACHE_COMPRESSED, 20); (...) }(...)
savemessage.php
<?php include("db.php"); $msgcon=$_POST['message']; ?>
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 ?