
PHP - Delimiter
Neporadil by někdo, kde je chyby?
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);$data = file_get_contents('php://input');
$soubor = fopen("./shm/text.txt", "w");
fwrite($soubor, $data);
fclose($soubor);$data1 = explode("|", $data);
$soubor = fopen("./shm/teplota_venku", "w");
fwrite($soubor, $data1[0]);
fclose($soubor);$soubor = fopen("./shm/vlhkost_venku", "w");
fwrite($soubor,$data1[1]);
fclose($soubor);$soubor = fopen("./shm/signal_venku", "w");
fwrite($soubor, $data1[2]);
fclose($soubor);
?>
Notice: Undefined offset: 1 in /var/www/nacti.php on line 17
Notice: Undefined offset: 2 in /var/www/nacti.php on line 21
Jsou to tyto dva přikazy
fwrite($soubor,$data1[1]);
fwrite($soubor, $data1[2]);
Ale jinak to funguje jak ma.
Chyby budou nejspíš ve vstupním souboru, který ale neuvádíš.
18.6|76.9|-77|
Toto je vstupní soubor, který se uklada v tom php do $soubor = fopen("./shm/text.txt", "w");
A pak se ma rozkouskovat, a každa hodnota do jineho souboru.
Ono to funguje jak má, ale něco se mu nelibi.
Undefined offset naznačuje, že v poli data1 nemáš očakávané prvky 1 a 2. Však si vypíš obsah poľa, print_r($data1);
Inak, tie komplikované zápisy zápisu do súboru by som nahradil jedným riadkom: file_put_contents($filename, $data);
Ono neni co vypsat
Jakto že ne? Přece čteš nějaké hodnoty ze souboru, které "rozsekáš" a následně zapíšeš do samostatných souborů.
Ne, ono tu PHP stranku zavola ESP8266 a pošle mu to.
Mně osobně ten tvůj kód chybu nevyhazuje a jak už tu někdo psal, asi bude chyba ve vstupních datech.
A i tu bylo psáno něco o file_put_contents, proč nepoužiješ todle to? Vypadá to líp.
Tak když to načitam ze souboru, tak je to ok.
Když to změnim.
$data = file_get_contents('php://input');
Tak i toto vyhazuje chybu.
No ale hlavně že to funguje,dik.
Nebolo by zlé pridať do časti medzi čítaním a zápisom kúsok kódu, kde si skontroluješ aké dáta tam máš. Lebo program sa ti chová rôzne len preto, že nemá vždy rovnaké podmienky. Však ale to vidíš vždy podľa obsahu toho output.txt
Raz tam máš tie tri čísla ako čakáš, inokedy tam je možno len jedno číslo. A inokedy iba nejaký text namiesto čísla, nejakú chybu.
Už výše jem psal že není co vypisovat.
Proto to take první ukladam cele - vše co přijde, a až pak rozsekam.
Na zahradě je ESP8266 ESP-01
Každou minutu se probudí, zjisti teplotu, vlhkost,´a silu signalu k wifi a odešle.
Nepíšem vypisovať ale myslím pridať nejaké riadenie správania programu. Lebo aj keď teraz vidím ten kód, tak tie prvky tam idú vždy tri, prázdne či plné. (ten tretí oddelovač '|' na konci netreba).
A z toho celého mi vyplýva, že ak to niekedy tie tri prvky nevygenerovalo, tak to predtým niekde muselo padnúť do chyby a ty si parsoval nejaký chybový výpis. Ale mal by byť v takom prípade uložený v tom output.txt
Mam to ošetřene, nikdy nedojde nic, bud hodnota, nebo NAN.
Ale tak jsem o tom uvažoval a pokud to funguje.
Tak ESP8266 zavola tu PHP a pošle řetězec a je to ok.
Pokud však tu stranku spustím ja, tak to asi žadný řetězec nenačte a nebo jen prazdný string " ", takže nema co rozdělovat a žadný oddelovač '|' tam není
A proto to
fwrite($soubor,$data1[1]);
fwrite($soubor, $data1[2]);