Pereiti prie turinio

.SH + PHP klausimas


Rekomenduojami pranešimai

Sveiki,

 

Susidūriau su bėda. Susikūriau šiokį tokį veikiantį .sh skriptą, kuris kaip suprantu Linux serveryje yra kaip alternatyva Cronjobs'ams. Kokiu būdu ir kaip jį turėčiau perdaryti, kad .php failas būtų paleidžiamas kas 10 sekundžių be pabaigos?

 

#!/bin/bash

while true; do
php upload.php
done

 

Keli papildomi klausimai:

 

- Ar perkrovus serverį jis sustotų veikęs?

- Su kokia PHP komanda ir užklausa galėčiau jį paleisti?

- Kaip rankiniu būdu jį sustabdyti?

Redagavo SofteriZ
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai jei tu turi prieiga prie ssh kodėl tiesiog nesukūrus crono su */10 * * * * php upload.php ?

Tu vis tiek turėsi kreiptis į tą PHP failą, kad jis paleistu .sh reiškiasi tu kaip minimum turi turėti pdeudo cron'a.

 

Edit: sorry neperskaičiau iki galo, kad reikia kas 10 sek., atnaujinsiu.

 

Ciklo gale reikia darašyti sleep 10. Tada tavo PHP faile shell_exec() funckija panaudoti.

 

shell_exec('script.sh'.' 2>&1 > out.log');

Arba į dev null jei tau nereikia logo.

Redagavo Prodev
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai jei tu turi prieiga prie ssh kodėl tiesiog nesukūrus crono su */10 * * * * php upload.php ?

Tu vis tiek turėsi kreiptis į tą PHP failą, kad jis paleistu .sh reiškiasi tu kaip minimum turi turėti pdeudo cron'a.

 

Edit: sorry neperskaičiau iki galo, kad reikia kas 10 sek., atnaujinsiu.

 

Ciklo gale reikia darašyti sleep 10. Tada tavo PHP faile shell_exec() funckija panaudoti.

 

Aš noriu pradžiai prasitestuot kreipiantis su PHP komanda į .sh failą, o vėliau paleist ir pamiršt ilgam, žinant, kad kreipsis nuolatos. Tavo aprašytu atveju .sh failas tampa nebūtinas? Užtenka sukurt */10 * * * * php upload.php cron'ą?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš noriu pradžiai prasitestuot kreipiantis su PHP komanda į .sh failą, o vėliau paleist ir pamiršt ilgam, žinant, kad kreipsis nuolatos. Tavo aprašytu atveju .sh failas tampa nebūtinas? Užtenka sukurt */10 * * * * php upload.php cron'ą?

Atnaujinau pirmą postą. Esmė čia tokia: jei nori paleisti ir pamiršti, shell_exec funkcijos antrasis parametras turi būti užpildytas su output'u, tai gali būti ir dev/null nesvarbu, bet jis būtinas jei nenori kad skriptas liautusi veikęs po to kai uždarysi taba naršyklės arba pereisi į kitą page. Testavimui užteks shell_exec('kelias_iki_sh.sh') ir nepamiršk sleep 10 ciklo gale. Kai paleisi .php bus vykdoma kas 10 sek., kai uždarysi tab'ą nustos.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Atnaujinau pirmą postą. Esmė čia tokia: jei nori paleisti ir pamiršti, shell_exec funkcijos antrasis parametras turi būti užpildytas su output'u, tai gali būti ir dev/null nesvarbu, bet jis būtinas jei nenori kad skriptas liautusi veikęs po to kai uždarysi taba naršyklės arba pereisi į kitą page. Testavimui užteks shell_exec('kelias_iki_sh.sh') ir nepamiršk sleep 10 ciklo gale. Kai paleisi .php bus vykdoma kas 10 sek., kai uždarysi tab'ą nustos.

 

 

Jei teisingai supratau, užteks įsidėti savo .sh skriptą, savo upload.php PHP failo gale įrašyt

shell_exec('script.sh'.' 2>&1 > out.log');

kartu su sleep(10);, tada paleisti PHP failą ir mano kodas suksis visados? Ar shell_exec nereikia paleidinėti kaskart?

 

O tai gal geriau būtų su cronu (kas minutę) kreiptis į sh failą, kuris kažką darys ar kreipsis kas dešimt sekundžių (max 50s)?

 

Tuomet nereikės sukti jokios galvos dėl rebootų, nes sh faila vėl inisijuos cronas ?

 

O cron'u galiu paleisti ir .sh failą, ne tik .php?

 

Edit: Jei kam nesunku, parašykit pavyzdį kaip turėtų atrodyt visa tai, būčiau labai dėkingas ir būtų paprasčiau susivokti.

Redagavo SofteriZ
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jei teisingai supratau, užteks įsidėti savo .sh skriptą, savo upload.php PHP failo gale įrašyt

shell_exec('script.sh'.' 2>&1 > out.log');

kartu su sleep(10);, tada paleisti PHP failą ir mano kodas suksis visados? Ar shell_exec nereikia paleidinėti kaskart?

 

Kai tu kreipsies į php failą kuriame yra shell_exac funkcija kuri kreipiasi į kažkokį .sh failą kuriame yra ciklas jis bus vykdomas jau kaip .sh skriptas ir nesustos kol neperkrausi serverio ar nenukilinsi proceso. Po perkrovimo žinoma veiktu nustos, jei nori, kad tavo .sh skriptas veiktu po serverio perkrovimo, tai reikia vėl kreiptis į php failą arba crontab -e: @reboot skriptas.sh

 

1 * * * * /bin/bash /cron/backup-files.sh

Netiks gi šitas, sukurs milioną procesų kas kart iš naujo paleidinės ciklus.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

shell_exec('script.sh'.' 2>&1 > dev');

 

Ar teisingai bandau pasidaryt komandą norint, kad nieko nelogintų?

Na toks tikrai nesuveiks.

 

Imu pvz iš savo praktikos kai man reikia išvesti į ekraną stdout:

 

php kodas

echo shell_exec("skriptas.sh >/dev/null 2>/dev/null &");

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...