Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz tothjozsi96 #16242 üzenetére

    Szívesen!
    Jó a felvetés, legegyszerűbb (még ha nem is szép) megoldás jelen esetben az lenne, ha maga az azonosító lenne a tömbindex, és annak értéke pedig az adatokat tartalmazó tömb lenne. Ez továbbra is tömbök tömbje, ahogy a korábbi megoldás is volt, csak annyi különbséggel, hogy itt explicite meghatározod a tömbindexet, nem pedig az automatikus számozásra bízod (mivel eddig numerikus indexek voltak használva, 0, 1, 2, ...).
    Tehát valahogy így, pszeudokóddal:

    $conversations = array(
    AZONOSÍTÓ1 => array(
    "text" => "asdasd",
    ),
    AZONOSÍTÓ2 => array(
    "text" => "blabla",
    ),
    AZONOSÍTÓ3 => array(
    "text" => "qweqwe",
    ),
    );

    az AZONOSÍTÓ1, AZONOSÍTÓ2, stb. kulcs lehet szám, vagy lehet egy string is (attól függően, milyen típusú azonosítót használsz).
    Akár redundánsan is tárolhatod az azonosítót, úgy, hogy pl.:

    AZONOSÍTÓ3 => array(
    'id' => AZONOSÍTÓ3,
    'text' => 'qweqwe',
    ),

    Ez bizonyos esetekben leegyszerűsítheti a dolgot, persze figyelni kell rá, hogy ez konzisztens maradjon, ne legyen egyik helyen ilyen azonosító, másik helyen amolyan.
    Egyébként tényleg érdemes lehet bevezetni egy osztályt, hogy szebben tudd tárolni és kezelni az adatokat.

    Jelen esetben ezzel az egyszerű megoldással tehát úgy tudnád törölni, hogy egyszerűen írsz egy unset($conversations[AZONOSÍTÓ3]); sort, ezzel kitörölve az adott tömbindexet, és ezután replace-eled a korábbi tömböt a memcache-ben, és meg is vagy.

    Itt is egyébként figyelni kell arra, nehogy egy másik csatlakozott kliens egy korábbi kiolvasott adatból tudjon beírni, úgy, hogy visszarakja valahogy ezt az értéket a tömbbe...
    Ezért is mondom, hogy szebb megoldást továbbra is valamilyen NoSQL-megoldással lehetne készíteni.

    Sk8erPeter

Új hozzászólás Aktív témák