abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 12:44 | Zajímavý software

    Byla oznámena nativní podpora protokolu ACME (Automated Certificate Management Environment) ve webovém serveru a reverzní proxy NGINX. Modul nginx-acme je zatím v preview verzi.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 25.08. Přehled novinek i s náhledy a videi v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    včera 11:55 | IT novinky

    Společnost Perplexity AI působící v oblasti umělé inteligence (AI) podala nevyžádanou nabídku na převzetí webového prohlížeče Chrome internetové firmy Google za 34,5 miliardy dolarů (zhruba 723 miliard Kč). Informovala o tom včera agentura Reuters. Upozornila, že výše nabídky výrazně převyšuje hodnotu firmy Perplexity. Společnost Google se podle ní k nabídce zatím nevyjádřila.

    Ladislav Hagara | Komentářů: 5
    včera 04:33 | Bezpečnostní upozornění

    Intel vydal 34 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20250812 mikrokódů pro své procesory řešící 6 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána nová verze 1.25 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    12.8. 13:44 | Nová verze

    Byla vydána beta verze Linux Mintu 22.2 s kódovým jménem Zara. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze novou XApp aplikaci Fingwit pro autentizaci pomocí otisků prstů nebo vlastní fork knihovny libAdwaita s názvem libAdapta podporující grafická témata. Linux Mint 22.2 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 0
    12.8. 13:00 | IT novinky

    Provozovatel internetové encyklopedie Wikipedie prohrál v Británii soudní spor týkající se některých částí nového zákona o on-line bezpečnosti. Soud ale varoval britského regulátora Ofcom i odpovědné ministerstvo před zaváděním přílišných omezení. Legislativa zpřísňuje požadavky na on-line platformy, ale zároveň čelí kritice za možné omezování svobody slova. Společnost Wikimedia Foundation, která je zodpovědná za fungování

    … více »
    Ladislav Hagara | Komentářů: 2
    12.8. 12:55 | Nová verze

    Byla vydána verze 2.0.0 nástroje pro synchronizaci dat mezi vícero počítači bez centrálního serveru Syncthing (Wikipedie). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 2
    12.8. 12:33 | IT novinky

    Americký prezident Donald Trump se v pondělí osobně setkal s generálním ředitelem firmy na výrobu čipů Intel Lip-Bu Tanem. Šéfa podniku označil za úspěšného, informují agentury. Ještě před týdnem ho přitom ostře kritizoval a požadoval jeho okamžitý odchod. Akcie Intelu v reakci na schůzku po oficiálním uzavření trhu zpevnily asi o tři procenta.

    Ladislav Hagara | Komentářů: 14
    11.8. 04:55 | Nová verze

    Byl vydán Debian GNU/Hurd 2025. Jedná se o port Debianu s jádrem Hurd místo obvyklého Linuxu.

    Ladislav Hagara | Komentářů: 6
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (52%)
     (18%)
     (4%)
     (5%)
     (3%)
     (1%)
     (1%)
     (16%)
    Celkem 390 hlasů
     Komentářů: 23, poslední 4.8. 13:01
    Rozcestník

    Dotaz: Bash a PHP

    16.11.2012 07:30 omorok | skóre: 2
    Bash a PHP
    Přečteno: 882×
    Přeji dobrý den, Mám pár dotazů. Předem upozorňuji, že nejsem programátor...

    Dávám si dohromady mylý monitorovací počítač (Raspberry PI), který mi bude odchytávat data z regulace (momentálně co se kdysi vyráběla a do budoucna ji vyměním za Arduino). Z regulace mi po RS 485 přichází každou sekundu naměřená data (teploty,stav čerpadla...). V Raspberry tyto hodnoty sleduji (pomocí Bash skriptu), zpracovávám a ukládám podle potřeby na disk. Zároveň mi na Raspberry běží i web-server s PHP. A mám dotazy: 1) Kam mám uložit spuštění Bash skriptu, aby se po výpadku napětí spustil? pokud to přidám do ~/.profile, nebo do ~/.bashrc, tak se skript spustí až se přihlásím (např. přes SSH)? 2) Jak posílat data ze skriptu Bash do PHP? Co jsem pátral, tak vím o dvou možnostech: 1- přes textový soubor. Bash bude např každou sekundu přepisovat určený soubor a PHP podle potřeby bude z něho číst. Nevýhoda- myslím si, že disk dlouhodobě takovéto ukládání nevydrží (v raspberry je SD karta). ideální by bylo, pokud by takový soubor neexistoval na disku, ale jen v paměti RAM, ale to nevím jak a kde udělat. Nebo 2- možnost přes pojmenovanou rouru. Ale to je navýhoda, pokud PHP nepotřebuje data (nikdo si stránku neprohlíží), roura se nevyprázdní a tím je Bash skript zastaven- nepřípustné.

    Děkuji za pomoc...

    Odpovědi

    16.11.2012 08:56 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Bash a PHP
    1. Asi bych v tomto případě si to dal spuštění s plnou cestou a & na konci /etc/rc.local (případně lze použít ještě nohup).
      V /etc/rc.local:
      /cesta/k/programu &
      Ale asi bude lepší a někdo to dále doporučí použít update-rc.d nebo ruční vytvoření linky.
    2. Soubor do paměti lze uložit nejjednodušeji, tím že se uloží /dev/shm/muj_nazev_souboru, ale mně přijde lepší si vytvořit vlastní ram-disk, vytvořit adresář např. /mnt/moje a do fstab dát řádek none /mnt/moje tmpfs defaults,size=10m 0 0
      Ovšem asi bude nutné nějak zamykat zápis/čtení. Třeba SQLite a datový soubor v paměti by to mohlo vyřešit samo.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Josef Kufner avatar 22.11.2012 12:37 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Bash a PHP
    Já bych do tmpfs připojil celé /tmp (a dal mu trochu vyšší limit na velikost). Na takovém stroji to bude asi nejjednodušší a ušetří to flashku se systémem.

    Statistiky bych pak jednou za čas odzálohoval mimo paměť. Jak často záleží na spolehlivosti systému a důležitosti dat.

    Jinak bych se vykašlal na Bash a napsal to celé v PHP s tím, že ten první skript by se spouštěl stejně jako ten Bash script. Může to zjednodušit propojení těch dvou skriptů (generování a parsování toho souboru -- json_encode/decode) a odstranit případnou duplikaci některých částí.
    #!/usr/bin/env php
    <php
    ...
    Spouštění pak lze připsat rovnou do /etc/inittab. V případě pádu se zajistí i nové spuštění toho scriptu.
    Hello world ! Segmentation fault (core dumped)
    22.11.2012 15:07 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Bash a PHP
    Klidně by to tak šlo, držel jsem se toho rozdělení…, ale autora už to nezajímá :-).
    K tomu: tmpfs připojil celé /tmp, mám jen zkušenost, že ten limit na /tmp je zrádný, nebo musí být velký (třeba 6GiB) aby to bylo v pohodě v dnešní době. Při nižších hodnotách se klidně může stát, že při vytváření například video DVD se to celé zauzlí či sletí (samozřejmě je to věc aplikací, ale už jsem měl potíže s 2GiB /tmp z podobných důvodů).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Josef Kufner avatar 22.11.2012 19:09 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Bash a PHP
    Už vidím jak Raspberry připojené k čerpadlu vypaluje DVD ;-)
    Hello world ! Segmentation fault (core dumped)
    23.11.2012 11:07 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Bash a PHP
    Vytvoří z naměřených dat prezentační DVD ;-).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    23.11.2012 13:33 omorok | skóre: 2
    Rozbalit Rozbalit vše Re: Bash a PHP
    Děkuji za názory. Trochu jsem byl pracovně mimo a netušil jsem jak se to tady rozvine. Zaujal mě názor, že by to psal jen v PHP. Mám k tomu jeden dotaz: Pokud chci, by se mi každou sekundu prováděli nějaké matematické operace, jak to PHP bude dělat, pokud zrovna nikdo nebude prohlížet webové stránky? Já jsem měl za to,že PHP funguje tak, že pokud vyžádám danou stránku, kde je HTML kod s PHP, tak se provede kod a odešle do prohlížeče a pak se čeká na další požadavek od uživatele...Nebo ne?
    23.11.2012 13:35 DK
    Rozbalit Rozbalit vše Re: Bash a PHP
    PHP ma i CLI :) takze treba vytvorit nekonecnou smycku
    23.11.2012 16:18 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Bash a PHP
    Můžete klidně použít výše odkazované #!/usr/bin/env php (nebo podobný zápis) a psát ot normálně jako script a přidat mu 'x' oprávnění.
    PHP lze používat jako každý podobný jazyk:
     php -r 'for($i=0;$i < 10;$i++){echo "Hallo PHP - $i\n"; sleep(1);}'
    nebo
    php file.php
    kde v file.php dáte jen na začátek <?php.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Josef Kufner avatar 24.11.2012 11:35 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Bash a PHP
    Každou minutu to můžeš zpustit z cronu. Je celkem jedno, jestli to budeš spouštět wgetem přes webový server na localhostu nebo přes CLI (command line interface, jak už jsem psal poprvé).

    PHP není jen "HTML a něco k tomu". Pokud tu aplikaci chceš napsat slušně, na tenhle přístup zapomeň. Webové aplikace jsou obvykle rozrěleny na tři části: řídící logika, model a šablony. Model je pár tříd, které reprezentují věci, se kterými aplikace manipuluje. Řídící logika rozhoduje, co se s modelem bude dít. Šablony pak jsou to "HTML a něco k tomu", které dostanou od aplikační logiky připravená data k zobrazení.

    Nehledej v tom nic složitého, je to jen o uspořádání kódu. Uděláš si třídu pro čerpadlo, tam dáš ty svoje výpočty, pak druhou na komunikaci s čerpadlem. V index.php pak jen rozhodneš, co se bude počítat, co komunikovat a nasbíraná data hodíš do pole a předáš ho funkci (šabloně), která jako jediná bude dělat echo, echo, echo,... Takle se v tom neztratíš, bude to udržovatelné a přehledné. Jak ten index.php spustíš už je celkem jedno (web server nebo CLI).
    Hello world ! Segmentation fault (core dumped)
    27.11.2012 08:56 omorok | skóre: 2
    Rozbalit Rozbalit vše Re: Bash a PHP
    Děkuji za radu a v podstatě tomu rozumím. Ještě musím ověřit spouštění PHP skriptu...

    Ale zatím nevím,jak mám pracovat v php s polem.

    Z regulace mi jde toto: 2,3,33,44,55,66,9,1 ,nebo i toto: 2888,3888,89,55,10,0,0.

    Bash skript mám takto:
    while true; do										 
    	a=`head -1 /dev/ttyUSB0 | tr "," " "`			
    	b=($a)											
    	U=${b[0]}									
    	I=${b[1]}										
    	Tkol=${b[2]}									
    	Tzass=${b[3]}									
    	Tzash=${b[4]}									
    	Taku=${b[5]}									
    	Pfv=${b[6]}										
    	Rez=${b[7]}									
    	Cer=${b[8]}										
    	
    fi
    kde do proměnné $a načtu vstup z ttyUSB0 a místo čárek vložim mezery. Proměnnou $a vložim do závorek a tím určim, že je to pole a přiřadim k proměnné $b. Dále již přiřazuji k proměnným jednotlivé položky a mohu s nimi pracovat (pořítat). Jelikož v poli jsou položky určovány čákou, mohou se měnit počet čísel v jednom poli.

    V PHP načítám z ttyUSB0:
    ?php $data=fopen("/dev/ttyUSB0", "r");
    	$text=fgets($data);
    	echo ($text); #poznámka
    	fclose($data); ?
    To načte celý vstup, což je vpořádku, pokud chci jen jednu položku a zadám pole: echo ($text[1]);, tak zobrazí jen jedno číslo, nebo i čárku ze vstupu ttyUSB0. Což nepotřebuji. Umí php načíst (rozdělit) do pole podle čárek...?
    27.11.2012 09:21 Kit
    Rozbalit Rozbalit vše Re: Bash a PHP
    Josef Kufner avatar 27.11.2012 11:17 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Bash a PHP
    Možností je spousta.

    Btw, malé intro.
    Hello world ! Segmentation fault (core dumped)
    13.12.2012 09:19 omorok | skóre: 2
    Rozbalit Rozbalit vše Re: Bash a PHP
    Po nějaké době jsem pohnul v "programování". A potřebuji pomoci. Napsal jsem program, který by měl dělat "rutinu". Bude načítat data z USB0, převádět, počítat a ukládat do souborů. Program mi sice funguje,ale v terminálu mi vypisůjí hlášky, které netuším co je:

    Výpis z terminálu, postupně se neustále opakuje:

    zde

    a rovněž přikládám daný program:

    Zde

    Nevím, kde mám chybu.

    A mám ještě dotaz:

    Jak bylo psáno výše, mám hlavní soubor např: index.php a do něho se načítají hodnoty z externího souboru např. regulace.php . Tím je v souboru index.php jen echo,echo... A v souboru regulace.php jsou načítány aktuální hodnoty. Tento soubor se aktualizuje pomocí volání z webového prohlížeče (index.php). A pokud k tomu potřebuji přiřadit další soubor regulace0_013B.php, který je spuštěn pomocí PHP5-CLI a ten dělá rutinu v ciklu. Jak hodnoty z regulace0_013B.php dostanu do souboru regulace.php? Nebo odstraním soubor regulace.php a nahradím souborem regulace0_013B.php? Nebude to dělat problémy, pokud by tento soubor byl spuštěn přes PHP-CLI a občas (zárověň) bude volán index.php?
    13.12.2012 11:58 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Bash a PHP
    Měl jste to položit jako nový dotaz...

    K tomu problému s Notice:, pokud pole načtete ze souboru pomocí fgetcsv, nelze zaručit, že bude vždy vytvořeno pole dané délky, resp. existence hodnot na těch indexech 1, 2, 3..., které tam natvrdo dáváte. Proto ten warning. Šlo by nadefinovat pole určité délky pomocí nějakého splněcoarray, ale možná by se to dalo zajímavé obejít pomocí array_combine($keys, $textpole). Nejprve byste si nadefinoval pole klíčů (v podstatě názvy sloupců v tom csvčku čili $keys=array("Ufve", "Ifve"...) a pak ho zkusíte zkombinovat s tím, co načtete ze souboru (zdá se mi že čtete jen jeden řádek). Ohlídá vám to i počet načtených hodnot (vyhodí exception pokud nesouhlasí) a budete k tomu moct i přistupovat pomocí symbolických jmen, takže je pak otázka jestli to vůbec bude potřeba "přelévat" do proměnných. Každopádně předpokládám, že bychom se tím vyhnuli tomu problému s potenciálně nedefinovanými indexy.
    13.12.2012 14:17 omorok | skóre: 2
    Rozbalit Rozbalit vše Re: Bash a PHP
    tak jsem se na to díval a chápu řádek:

    $keys=array("$Ufve", "$Ifve", "$Tkol", "$Tzass", "$Tzash", "$Taku", "$Pfve", "$rez", "$cer");

    Do další proměnné bych měl dostat vstup z USB0, což nevím přesně jak-možná takto:

    $data= fopen("/dev/ttyUSB0", "r"); $textpole = array($data);

    a pak to zkombinovat...

    $cele = arrya_combine($keys, $textpole);

    do dev/ttyUSBO přichází data z regulace po RS485 přes převodník co 1s.
    13.12.2012 22:09 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Bash a PHP
    Až na ty dolary, protože tam dáváte jen jakési symbolické memotechnické názvy pro ty výsledné hodnoty, je to podobné jako proměnné, ale proměnné to nejsou, proměnnou je to pole, jeho jednotlivé prvky pak rozlišujete těmi jmennými indexy:
    $keys=array("Ufve", "Ifve", "Tkol", "Tzass", "Tzash", "Taku", "Pfve", "rez", "cer");
    Potom můžete počítat rovnou s proměnnými jakožto prvky v poli:
    $cele["Ufve"] + $cele["Ifve"]
    nebo si to převést na normální proměnné jako předtím.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.