PHP: změna hodnoty podle klíče

Janus

PHP: změna hodnoty podle klíče
« kdy: 20. 09. 2018, 16:58:38 »
Zdravim,
mam 5 hodnot, ktere prubezne potrebuji aktualizovat, zobrazovat. Nejlepe podle klic->hodnota. Existuje nejaka vhodna metoda na misto zakladani databaze?

Diky
« Poslední změna: 20. 09. 2018, 18:51:05 od Petr Krčmář »


BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:PHP: zmena hodnoty podle klice
« Odpověď #1 kdy: 20. 09. 2018, 18:00:54 »
Zdravim,
mam 5 hodnot, ktere prubezne potrebuji aktualizovat, zobrazovat. Nejlepe podle klic->hodnota. Existuje nejaka vhodna metoda na misto zakladani databaze?

Budeš muset asi lépe definovat zadání.

Snad máš na mysli že chceš uchovávat 5 hodnot, a databázi ti přijde příliš. Tak to ukládej do souboru? Pro klíč hodnota to může být ini formát -> parse_ini_file(). Osobně bych spíše zvolil json (json_decode) čistě pro moje pohodlí.

Janus

Re:PHP: zmena hodnoty podle klice
« Odpověď #2 kdy: 20. 09. 2018, 18:01:10 »
V zaveru budu volat pres exec v php skript, kterej to udela... Sice je to sracka, ale jde jenom o aktualizaci 5 hodnot a nechce se mi vytvaret extra tabule...
Kód: [Vybrat]
KEY=$(echo $2 | tr -cd '[:alnum:]')
REPLACEBY=$(echo $3 | tr -cd '[:alnum:]' )
COMMAND=$(echo $1 | tr -cd '[:alnum:]' )
DBFILE=test.db


function update(){
        if  grep -qw ${KEY} ${DBFILE}; then
                val=$(grep ${KEY} ${DBFILE})
                sed -i 's/'${val}'/'${KEY}'='${REPLACEBY}'/g' $DBFILE
                exit 0
        else

                echo "ERROR: Invalid key to search"
                exit 1
        fi
}


if [ -z $COMMAND ]; then
        echo "ERROR: arguments expected"
        exit 1
fi


if [ ! -f ${DBFILE} ]; then
        echo "ERROR: DB file ${DBFILE} doesn't exist"
        exit 1
fi


if [ $COMMAND == "update" ]; then
        update
fi                   

kkt1

  • *****
  • 796
    • Zobrazit profil
Re:PHP: zmena hodnoty podle klice
« Odpověď #3 kdy: 20. 09. 2018, 18:06:41 »
 ::)

Janus

Re:PHP: zmena hodnoty podle klice
« Odpověď #4 kdy: 20. 09. 2018, 18:07:34 »
no tak se jeste kouknu na to parse_ini_file


agent

Re:PHP: zmena hodnoty podle klice
« Odpověď #5 kdy: 20. 09. 2018, 18:33:15 »
Načtené hodnoty asi budeš mít v nějakém poli.
Nejjednodušší opravdu bude přes json_encode() pole převést na řetězec, ten uložit do souboru.
A při zobrazování opačně načíst obsah souboru a použít na získaný string json_decode() - a máš zpět pole s hodnotami.

Stejně by šla použít i dvojice funkcí serialize() / deserialize(), jen to bude v serializované podobě vypadat mailnko jinak než json. Používám tohle při ukládání objektů do session.

Kit

Re:PHP: zmena hodnoty podle klice
« Odpověď #6 kdy: 20. 09. 2018, 18:40:28 »
Když už to děláš v shellu, vyzkoušej příkaz sqlite3, který ti umožní persistovat data v jednom souboru podle nějakého klíče.

Pokud je to moc komplikované, můžeš zkusit další jednoduché souborové databáze DB4, Tokyo Cabinet, TDB apod.

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:PHP: zmena hodnoty podle klice
« Odpověď #7 kdy: 21. 09. 2018, 00:10:11 »
Když už to děláš v shellu, vyzkoušej příkaz sqlite3, který ti umožní persistovat data v jednom souboru podle nějakého klíče.

Pokud je to moc komplikované, můžeš zkusit další jednoduché souborové databáze DB4, Tokyo Cabinet, TDB apod.

Na pět hodnot?

jouda

Re:PHP: zmena hodnoty podle klice
« Odpověď #8 kdy: 21. 09. 2018, 00:30:09 »
Má to bejt persistentní přes restart?
Jestli ne kuk sem, asi nejrychlejší http://php.net/manual/en/function.shm-attach.php

Jestli ano, tak buď jak psal Kit sqlite3, nebo jestli je i to kanón na vrabce, tak http://php.net/manual/en/function.dba-open.php optimálně asi přes gdbm.

K té prasárně s scriptem přes exec - co to udělá když to víceméně současně pustěj 2 klienti na 2 jádrech?