Riešenie pre otvorenie txt súboru 1x od updatu – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Riešenie pre otvorenie txt súboru 1x od updatu – PHP – Fórum – Programujte.comRiešenie pre otvorenie txt súboru 1x od updatu – PHP – Fórum – Programujte.com

 

Martin
~ Anonymní uživatel
1600 příspěvků
10. 9. 2017   #1
-
0
-

Ahojte, riešim takýto problém. Mám PHP kód. Ako používateľ zadám požiadavku hlasom, prípadne ju napíšem a následne sa zapíše do .txt súboru ako text. Mikroprocesor si to prečíta a vykoná akciu. Je tu ale takýto problém. Chcem aby sa súbor dal otvoriť iba raz a následne sa buď už nedal otvoriť, alebo sa zmazal jeho obsah. 
Jeho obsah mením cez php kód cez funkciu put contents.
Príklad: Mikroprocesor si prečíta, že chcem zapnúť vonkajšie osvetlenie, prečíta si to opäť za pár sekúnd, nič sa nezmení, lebo požiadavka je stále tá istá a výstup je stále aktivovaný. 
Predstavme si ale tlmené PWM osvetlenie, ktoré navýšim o 10% a chcem to iba raz. Ako následne zabrániť prečítaniu súboru, aby mi do nekonečna mikroprocesor nepridával hodnoty na výstupe na základe prečítania požiadavky, aj keď som ju nezmenil na stále je tam zapísaná? Nejaké tipy? Dá sa to riešiť cez .htaccess alebo apache nastavenia, prípadne niečo v php? Ako najvhodnejšie by ste podobnú vec riešili vy?

Nahlásit jako SPAM
IP: 195.28.147.–
gna
~ Anonymní uživatel
1849 příspěvků
10. 9. 2017   #2
-
0
-

Nestahuj přímo ten texťák, ale PHP skript, který vrátí obsah toho souboru a pak ho vymaže.

Aby jsi nepřišel o data, pokud bude čtení a zápis probíhat ve stejnou chvíli, můžeš použít flock.

Nahlásit jako SPAM
IP: 213.211.51.–
Martin
~ Anonymní uživatel
1600 příspěvků
10. 9. 2017   #3
-
0
-

To je ten problém, že mikrokontróler neprečíta PHP. Skúšal som to podobne a mal som výpis txt súboru v php súbore a malo sa mi vrátiť: Zapni LED 1 a vrátilo sa mi: 12dsf84 Takže to nefunguje.  Jedná sa o NodeMCU. 

Nahlásit jako SPAM
IP: 195.28.147.–
Martin
~ Anonymní uživatel
1600 příspěvků
10. 9. 2017   #4
-
0
-

Vyriešim to na strane kontroléra, že si uložím string predošlej požiadavky a aktuálnej ak sa budú zhodovať, nevykoná sa nič.

Nahlásit jako SPAM
IP: 195.28.147.–
gna
~ Anonymní uživatel
1849 příspěvků
10. 9. 2017   #5
-
0
-

Chápu to tak, že ten .txt stahuješ ze serveru přes HTTP. Jestli je to statický soubor nebo skript řeší server. Klientovi je to jedno.

Pokud ti skript vrací špatná data, tak je v něm chyba.

Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
3981 příspěvků
11. 9. 2017   #6
-
0
-

Ja bych to resil pres databazi. Souborove to muzes resit stejne.

zapis.php?data='rozsvit'
precti.php - ktere soucasne smaze z db ten text
zp.php?akce=zapis&data='rozsvit'
zp.php?akce=precti

Na serveru se da php spoustet tusim pres 'php precti.php' (nebo 'http precti.php' nebo tak nejak se to tam dela).

Ale slo by to delat tak, ze ke kazdemu pozadavku pridas casove razitko. Funkce si pak precte jen radky v urcitem intervalu, ostatni ignoruje. A pak ti bezi na serveru jeste proces, ktery smaze radky se starsim razitkem. Ale prijde mi to na houbec, kdyz to muze delat zrovna ten php program.

No, a pak muzes v tom php predat data primo tomu dalsimu programu, neni treba to zapisovat. Nejdriv si overis, zda je to platny prikaz, ale.
 

<?php
$data = 'rozni';
shell_exec('jinyprogram.exe -data='.$data); // tady existuje asi 5 prikazu pro spousteni z command-line, google
//http://php.net/manual/en/function.exec.php
//exec();
//system() - Execute an external program and display the output
//passthru() - Execute an external program and display raw output
//escapeshellcmd() - Escape shell metacharacters
//pcntl_exec() 
?>
Nahlásit jako SPAM
IP: 193.84.207.–
peter
~ Anonymní uživatel
3981 příspěvků
11. 9. 2017   #7
-
0
-

Jeste mozna jine cteni souboru
$data = file_get_content('soubor.txti');
 

Jinak, samozrejme pri vice zapisech je dobre pouzit flock, pro uzamceni souboru, pokud do nej zapisuje prave jiny prikaz.

Nahlásit jako SPAM
IP: 193.84.207.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Otvorenie suboru z VS. — založil zonda

Otvorenie súboru — založil tito100

Otvorenie súboru cez GUI — založil michal

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý