PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
Bash loop ja PHP CLI
Postitaja: oki 2018-03-19 16:34:40

#!/bin/bash

while true
do

read esimene teine;


if [ "$esimene" = "vaata" ]; then
php proov.php $teine;
fi;

if [ "$esimene" = "saada" ]; then
php proov.php $teine;
fi;

#pidev loop ja otsing mujalt
php otsing_mujalt.php

php lisategevused.php


sleep 1
done

RE: Bash loop ja PHP CLI
Postitaja: oki 2018-03-19 16:35:08
Oleks vaja loop tööle saada nii et kasutaja input täidetakse ja tsükkel läheb edasi.
Praegusel kujul see ei taha toimida

TSITEERITUD:

#!/bin/bash

while true
do

read esimene teine;


if [ "$esimene" = "vaata" ]; then
php proov.php $teine;
fi;

if [ "$esimene" = "saada" ]; then
php proov.php $teine;
fi;

#pidev loop ja otsing mujalt
php otsing_mujalt.php

php lisategevused.php


sleep 1
done

RE: Bash loop ja PHP CLI
Postitaja: = asemel == 2018-03-23 16:18:13
peaks olema

if [ "$esimene" == "vaata" ]; then
RE: Bash loop ja PHP CLI
Postitaja: lepatriinu 2018-05-31 10:44:16
Ma hetkel päris täpselt ei saa aru,
mida Te seal teha soovite, aga Bash'is on
tsüklitega üks paras jukerdamine. Minu soovitus
on, et ärge Bash'is keerulisemaid asju üldse
tegema hakake, vaid kasutage Bash'i vaid
liidestamiseks. Kui võimalik, siis kasutage
isegi PHP'd vaid liidestamiseks ja pange
veebirakenduse keerukam kood Ruby'sse või Python'isse.
Üldskeem oleks selline:

samm_1)
Veebiserver, sõltumata margist, tõmbab tööle
Teie kirjutatud PHP-koodi.


samm_2)
Teie kirjutatud PHP-kood on vaid veebi-serveriga
liidestumiseks ning kirjutab saabunud andmed
kas keskkonnamuutujatesse või ajutise nimega
tekstifaili, võibolla JSON/YAML/XML/midagi_muud formaadis,
ning tõmbab PHP funktsiooni

http://php.net/manual/en/function.exec.php

välja kutsudes tööle konsooliprogrammi, milleks
võib olla suvalises programmeerimiskeeles
kirjutatud konsooliprogramm, mis tollel serveril
jookseb. Konsooliprogrammiks võib olla ka
Bash'i interpretaator, millele on konsooliargumendiks
antud Bash-skripti rada. Teie kirjutatud PHP-programmi
loodud ajutine tekstifail andmetekga antakse
tollele konsooliprogrammile ette konsooliargumendina.
Näiteks Bash'i korral:

bash minu.bashscript t2israda_ajutisele_andmefailile.midagi

Kui andmed saabuvad veebiserverisse HTML-blanketi
POST-meetodit kasutades, siis on tark need andmed
PHP-programmis eraldi tekstifaili kirjutada, sest
veebiserver ei pane CGI-programmiga suhtlemiseks,
mida PHP-interpretaator veebiserveri
jaoks FastCGI liidese korral on,
POST-meetodiga saabunud andmeid
keskkonnamuutujasse ja lihtsam on lasta PHP-interpretaatoril
CGI standardi järgi PHP-interpretaatorile veebiserverilt
edastatud andmete kättesaamise osa ära teha.


Tsitaat aadressilt
https://www.oreilly.com/openbook/cgi/ch04_02.html
arhiivkoopia: https://archive.is/A3Kt1

"To get data sent by the POST method,
the CGI program reads from standard input."
(Lugeda: tükk jamamist, mis on PHP-
interpretaatori realisatsioonis juba ära tehtud.)


samm_3)
Teie kirjutatud PHP-programmi poolt
tööle tõmmatud konsooliprogramm teeb
töö ära, sisaldades ka kogu "äriloogikat",
suheldes andmebaasidega, jne. ning kirjutab
oma väljundi faili, milleks võib olla ka
sisendandmeid sisaldanud ajutine fail.
Ajutise faili võib lihtsuse mõttes üle kirjutada.


samm_4)
Tööjärg jõuab konsooliprogrammist tagasi
Teie kirjutatud PHP-programmi, mis sõltuvalt
Teie poolt valitud tarkvara arhitektuurist
kas tagastab konsooliprogrammi poolt kirjutatud
faili sisu üks ühele PHP-programmi väljundiks,
näiteks käskudega


readfile($failirada);
unlink($failirada)
die();


või loeb faili Teie poolt kirjutatud PHP-programmi
andmestruktuuridesse ning koostab veebiserverile
tagastatava vastuse PHP-koodis.


Kui veebimajutuse teenuse pakkuja serverile
pole Teile sobivat tarkvara installeeritud
või Te soovite kasutada täiesti enda kompileeritud
binaari, näiteks C++'is või Pascal'is kirjutatud
binaari, siis isegi olukorras, kus serveri
administraator keeldub vastavat tarkvara
serverile installeerimast ning Teil puudub
serverile ssh-juurdepääs, on Teil võimalik eelnevalt
mainitud

http://php.net/manual/en/function.exec.php

käsuga tööle lasta konsooli-rida


uname -a


ning selle konsooli-rea väljund test-lehel kuvada.
Sealt saate teada täpselt, mis operatsioonisüsteemi
millist versiooni server jooksutab. Kui serveri
CPUd on Intel'i või AMD omad ning serveril jooksev
operatsioonisüsteem väga eksootiline ei ole,
on Teil võimalik sama operatsioonisüsteemi


TÄPSELT SAMA VERSIOON


ära installeerida oma enda x86/AMD64 tööarvutis
olevasse

https://www.virtualbox.org/

virtuaalmasinasse ning virtuaalmasinas kompileerida
täpselt selline,


STAATILISELT LINGITUD


binaar, mis antud serveril tööle läheb. Seejärel
saate selle binaari laadida serverisse ja kasutada
seda servril tavalise konsooliprogrammina,
mida saab Teie kirjutatud PHP-koodist tööle
tõmmata eelnevaltki juba mainitud

http://php.net/manual/en/function.exec.php

käsuga. Antud lahenduse puuduseks on, et kui
veebimajutaja vahetab operatsioonisüsteemi või
riistvara, siis tuleb Teil uus binaar kompileerida,
aga seda juhtub tõenäoliselt vaid kord paari aasta jooksul.
Sedasi, ise, saab konsooliprogrammiks installeerida
serverile ka ise kompileeritud Ruby't ja Python'it.

Soovitan kohe kogu "äriloogika" Python'isse
või Ruby'sse panna, kuid kui Te tõesti soovite
Bash'is asju asju ajada, siis siin on paar
koodinäidet, kuidas Bash'is tsüklitega ja
massiividega ümber käia:

https://pastebin.com/N28bGdSd
arhiivkoopia: https://archive.is/r4xGX

Oletan, et Teile võib eriti huvi pakkuda näites olev
funktsioon nimega "func_ar_ls_t1", mis lisab
konsooliprogrammi "ls" väljundi Bash'i massiivi,
kuid hoiatan, et Te tõenäoliselt säästate kõvasti
aega ja vaeva, kui teete seda kohe Ruby's või Python'is.

Hoiatuseks lisan, et BSD-l toimiv programm "awk"
käitub Linux'il olevast programmist "gawk" erinevalt
ning konsooliprogrammi "ps" väljundid on Linux'il
ning BSD-l erinevad, mistõttu operatsioonisüsteemiga
seonduvad parameetrid on soovitatav Teie koodi
portatiivsuse huvides välja lugeda vaid Ruby või
Python'i või PHP standardteekide kaudu. Lahendus,
kus Bash-programm tõmbab korduvalt tööle Ruby
interpretaatorit, on kohutavalt aeglane, sest
iga väljakutse korral tuleb initsialiseerida
kogu Ruby interpretaator, sealhulgas allokeerida
ligikaudu 40MiB jagu RAM'i, mis mälukogusena pole
tänapäeva riistvara jaoks suur, aga mille allokeerimine
tõmbab kiiruse meeletult alla. Alternatiiv on
luua Ruby või Python'i programm, mis käitub
nagu Java servlet, nõnda, et Ruby intrepretaatori
alg-käivituse asemel antakse vaid funktsioonikutse
juba töös olevale, Ruby's kirjutatud, servletile,
kuid see muudab tarkvara arhitektuuri keerukamaks.


Tänan lugemast.

RE: Bash loop ja PHP CLI
Postitaja: blaa 2018-05-31 20:43:17
Kurat, mingi üleõppinud töötu on hullumajast lahti pääsenud
RE: Bash loop ja PHP CLI
Postitaja: lepatriinu 2018-05-31 23:52:17
Lisan veel, et server tuleb kindlasti
elisast või teliast võtta. Amazon või
OVH on kaugel ja kindlasti aeglased.
Kohalkiud teenusepakkujad zone ja
veebimajutus ei paku piisavat
kvaliteeti ega konsooliprogramme.
RE: Bash loop ja PHP CLI
Postitaja: muidumeezz 2018-06-04 14:47:36
Tundub, et vangidele ongi hakatud progemist õpetama
RE: Bash loop ja PHP CLI
Postitaja: Nelli nädalapiiga 2018-06-06 22:04:32
Selle grafomaani käekiri/postitused vastavad täpselt Martin Vahi ehk http://www.softf1.com/ taga olevale tüübile. Kunagi ta figureeris siin foorumis oma päris nime all. Keldris nokitseja, grafomaan, kes päris profesionaalsete arendajate punti sattudes pekstaks peale esimest paari commiti minema (kui Härra peaks elus mõnes tööintervjuust üldse läbi saama).

enivei, Martin lõpeta see erinevate nimede alt grafomaania ära.

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.525839090347