Topic: Crontab (at funkcijos) naudojimas per php exec

Sveiki,

Noriu padaryti tokį kaip tvarkaraštį, kada leist skriptą, tačiau man kažko neveikia. Tiesiog neįvykdo komandos ir neprideda darbo. Leidžiant per terminalą viskas puikiai gaunas. Naudoju Linux Mint.

<?php
include "config.php";
if (isset($_POST['add']))
{
 $sql = mysql_query("INSERT INTO {$table}(msg) VALUES('{$_POST['msg']}')");
 if ($sql)
 {
  $cmd = "wget /var/www/index.php?id=" . mysql_insert_id() . " | at " . $_POST['runat'];
  exec($cmd);
  echo exec("atq");
  echo $cmd;
 }
 exit();
}

echo "<form action='{$_SERVER['PHP_SELF']}'  method='POST'>";
echo "<input type='text' name='msg' />";
echo "<input type='text' name='runat' />";
echo "<input type='submit' name='add' />";
echo "</form>";

?>

Re: Crontab (at funkcijos) naudojimas per php exec

neturiuVardo wrote:

Sveiki,

Noriu padaryti tokį kaip tvarkaraštį, kada leist skriptą, tačiau man kažko neveikia.

Tiesiog neįvykdo komandos ir neprideda darbo. Leidžiant per terminalą viskas puikiai gaunas. Naudoju Linux Mint.

Reikia pradėti mokytis apdoroti klaidas, tai tau išspręs daug problemų.

Taip pat gal gali plačiau paaiškinti ką reiškia "leidžiant per terminalą" ir kaip leidi script'ą, kada jis neveikia.

Problemos gali būti kelios - keliai iki wget ar config'o turėtų būti pilni, nes neaišku kokioje aplinkoje tu čia leidi tuos scriptus.

Taip pat gal nesunku paaiškinti, kam tie echo? (-;

neturiuVardo wrote:
echo "<form action='{$_SERVER['PHP_SELF']}'  method='POST'>";
echo "<input type='text' name='msg' />";
echo "<input type='text' name='runat' />";
echo "<input type='submit' name='add' />";
echo "</form>";

Re: Crontab (at funkcijos) naudojimas per php exec

šį skriptą leidžiu per naršyklę, jis bus kaip forma, kada pridėti tuos laikus, formą submitinus vykdomas tas kodas.
Leidžiant per terminalą - tarkim paleidus "wget /var/www/index.php | at 19:55" ir po to "atq", rodo, kad darbas bus vykdomas.
O kaip suprast: "neaišku kokioje aplinkoje"?

Re: Crontab (at funkcijos) naudojimas per php exec

neturiuVardo wrote:

Leidžiant per terminalą - tarkim paleidus "wget /var/www/index.php | at 19:55" ir po to "atq", rodo, kad darbas bus vykdomas.

Tai tu nori pasakyti, kad per terminalą viskas veikia, o per narškle ne? (-;

neturiuVardo wrote:

O kaip suprast: "neaišku kokioje aplinkoje"?

Aplinka - kas klientas, kas interpretatorius ir kokie aplinkos kintamieji.

Tarkim terminale tai PHP scriptai leidžiami taip: /kelias/iki/php -f /kelias/iki/scripto/scriptas.php
Galioje shell'o kintamieji keliams.

Aš tiesa sakant nesu bandęs "wget /var/www/index.php" shell'e, bet galiu spėti, kad tau php nebus interpretuojamas...

Re: Crontab (at funkcijos) naudojimas per php exec

minde wrote:

Tai tu nori pasakyti, kad per terminalą viskas veikia, o per narškle ne? (-;

Taip, teisingai.

minde wrote:

Aplinka - kas klientas, kas interpretatorius ir kokie aplinkos kintamieji.

Tarkim terminale tai PHP scriptai leidžiami taip: /kelias/iki/php -f /kelias/iki/scripto/scriptas.php
Galioje shell'o kintamieji keliams.

Aš tiesa sakant nesu bandęs "wget /var/www/index.php" shell'e, bet galiu spėti, kad tau php nebus interpretuojamas...

Aišku, o tai kas čia galėtų būti ir kaip tai būtų įmanoma padaryti?

Re: Crontab (at funkcijos) naudojimas per php exec

taigi jau parase kaip padaryti....

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Crontab (at funkcijos) naudojimas per php exec

zygis wrote:

taigi jau parase kaip padaryti....

Tai kad man "at" komanda per exec neina... čia ir problema, kitaip nežinau kaip padaryti :(

Re: Crontab (at funkcijos) naudojimas per php exec

neturiuVardo wrote:
zygis wrote:

taigi jau parase kaip padaryti....

Tai kad man "at" komanda per exec neina... čia ir problema, kitaip nežinau kaip padaryti :(

Galiu pakartoti: naudok pilnus kelius iki programų.

(aišku, paskui susidursi su kitomis problemomis)

9 (edited by neturiuVardo 2010-10-15 01:17:31)

Re: Crontab (at funkcijos) naudojimas per php exec

Hehe, na kol kas aišku, pažiūrėjau logus:
"You do not have permission to use at.".

EDIT:
Suteikiau 777 teises, visvien tą patį sako :/ Kodėl taip galėtų būt?

EDIT2:
Nu va, veikia! Tiesiog reikėjo į /etc/at.allow įrašyt www-data :)

Bet dabar kitas klausimas, turbūt tokie dalykai ant shared hostingo neveiktų? čia jau vps reiktų imt?

Re: Crontab (at funkcijos) naudojimas per php exec

Tai čia ne kažkoks stebuklas, tiesiog yra ir veikia visur...

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer