Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> CakePHP 3 uruchamianie zadań na home.pl
wojtek6000
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.12.2016

Ostrzeżenie: (0%)
-----


Witam wszystkich:)

Napotkałem pewien problem przy pracy z frameworkiem CakePHP. Chciałbym aby niektóre akcje wykonywały się cyklicznie bez mojej ingerencji czyli np. wysyłały się maile z raportami do określonych użytkowników. Do wykonania tego zadania chce wykorzystać możliwość serwera home.pl i zadania crona. W tym celu napisałem funkcje jako zadania powłoki. Po uruchomieniu tego skryptu na serwerze lokalnym (localhost) z lini komend wszystko działa poprawnie i funkcja się wykonuje (poprawnie wysyła maile). Problem pojawia się kiedy na zdalnym serwerze chce uruchomić to samo zadanie. I tu moje pytanie do Was: co mam wpisać w pliku cron aby uruchomić to zadanie? Dzwoniłem do pomocy home.pl i powiedzieli mi że wszystko jej poprawnie skonfigurowane czyli plik jest w dobrym miejscu, ma odpowiednią nazwę i uruchamia się tak jak sobie tego życzę lecz w nim znajduje się błąd. Sęk w tym że nie wiem jak poprawnie wywołać to zadanie...
Szukałem i znalazłem wskazówki ze powinienem użyć funkcji system lub exec... ale jak mam ich użyć?
Go to the top of the page
+Quote Post
memory
post
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


system('wget adreswww/cron.php?key=6f4LuIzrJjQg2JprEt03gntGas1AeUx'%3b');

Ten post edytował memory 8.12.2016, 17:40:44
Go to the top of the page
+Quote Post
wojtek6000
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.12.2016

Ostrzeżenie: (0%)
-----


Tzn jak mam to rozumieć? Skąd ta wartość? Czy mógłbym prosić o małe wyjaśnienie?
Go to the top of the page
+Quote Post
memory
post
Post #4





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


wartość jest przykładowa system(wget 'plik z cronem') . system - uruchamia shella. wget - pobiera plik
Go to the top of the page
+Quote Post
wojtek6000
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.12.2016

Ostrzeżenie: (0%)
-----


Hmmm... zrobiłem jak mówisz lecz po odpaleniu mojego crona z przeglądarki pojawia się taki komunikat:

Malformed header from CGI script: --2016-12-08 21:08:31-- http://nazwa_serwera.home.pl/public_html/cake/bin/cake.php Resolving nazwa_serwera.home.pl (nazwa_serwera.home.pl)... adres_ip Connecting to nazwa_serwera.home.pl (nazwa_serwera.home.pl)|adres_ip|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2016-12-08 21:08:31 ERROR 404: Not Found. Content-type: text/html; charset=UTF-8

Natomiast mój kod wyglada następująco i jest to zawartość pliku cron-5min.php:

<code>
  1. <?php
  2. ?>

</code>

echo i pre użyłem żeby zobaczyć jakikolwiek efekt w przeglądarce:) Zadanie shellowe o nazwie Hello zwraca tylko napis Hello. Wydaje mi się że jeżeli ten skrypt poprawnie sie wykona to w przeglądarce wyświetli się właśnie Hello. Co chyba ze błędnie myśle...

Nie wiem czy my się dobrze zrozumieliśmy więc wyjaśnię jeszcze raz: samo wykonywanie pliku co 5 minut działa lecz jest błąd w pliku crone-5min.php bo nie wiem jak mam uruchomić skrypt shellowy wbudowany w cakephp o nazwie cake.php który z kolei za parametr przyjmuje nazwę napisanego przeze mnie skryptu i dopiero on wykonuje zaplanowane akcje.

Ten post edytował wojtek6000 8.12.2016, 21:59:30
Go to the top of the page
+Quote Post
ZenekN
post
Post #6





Grupa: Zarejestrowani
Postów: 419
Pomógł: 5
Dołączył: 7.08.2012

Ostrzeżenie: (0%)
-----


@wojtek6000, musisz próbować metodą prób i błedów praktycznie każdy język to tak naprawdę interfejs dla ludzi stworzony przez ludzi ;-)

popróbuj assembler i zobaczysz wtedy co to znaczy podwyższony poziom trudności ;-]

Ten post edytował ZenekN 8.12.2016, 21:52:19
Go to the top of the page
+Quote Post
memory
post
Post #7





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


https://pomoc.home.pl/baza-wiedzy/cykliczne...chamianie-cron/
Pobiera plik a nie uruchamia "zadanie shellowe" . Musisz opakować "zadanie shellowe" w plik php aby można było odpalić z poziomu przeglądarki.
Go to the top of the page
+Quote Post
wojtek6000
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.12.2016

Ostrzeżenie: (0%)
-----


I właśnie o to mi chodzi..... Nie wiem co mam napisać by uruchomić aplikacje cake.php... Na localhoscie nie ma problemu bo uruchamiam cmd i pisze:

<code>
php.exe /sciezka_dostepu/bin/cake.php NazwaKlasy NazwaMetody
</code>

i wszystko pięknie działa. Bardzo proszę o wskazówkę czy w ogóle da się uruchomić tego typu aplikacje na zdalnym serwerze...

Tu link do dokumentacji:
http://book.cakephp.org/3.0/en/console-and-shells.html
Go to the top of the page
+Quote Post
kapslokk
post
Post #9





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Próbowałeś:

  1. <?php
  2. system('php /sciezka_dostepu/bin/cake.php NazwaKlasy NazwaMetody');

?
Go to the top of the page
+Quote Post
wojtek6000
post
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.12.2016

Ostrzeżenie: (0%)
-----


Mam juz w pliku coś takiego :

<code>
  1. <?php
  2. chdir('/cake/bin/');
  3. echo "<pre>".shell_exec("ls")."</pre>";
  4. //echo shell_exec("./cake.php Hello");
  5.  
  6. //system("sh /start.sh");
  7. echo "<pre>".system('php.exe cake.php MojeSkrypty sendmail')."</pre>";
  8. echo "<pre>".system('./php cake.php MojeSkrypty sendmail')."</pre>";
  9. echo "<pre>".system('php cake.php MojeSkrypty sendmail')."</pre>";
  10. echo "<pre>".system('./php.exe cake.php MojeSkrypty sendmail')."</pre>";
  11.  
  12. echo "<pre>".system('php.exe cake MojeSkrypty sendmail')."</pre>";
  13. echo "<pre>".system('./php cake MojeSkrypty sendmail')."</pre>";
  14. echo "<pre>".system('php cake MojeSkrypty sendmail')."</pre>";
  15. echo "<pre>".system('./php.exe cake MojeSkrypty sendmail')."</pre>";
  16. ?>

</code>

Jednak dalej nie działa... Mój skrypt powinien stworzyć pusty plik na serwerze i wysłać maila... na localhoscie działa bez zarzutu...

Ten post edytował wojtek6000 9.12.2016, 10:06:30
Go to the top of the page
+Quote Post
kapslokk
post
Post #11





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


chdir('/cake/bin/');
Nie mam pojęcia jak zadziała to na windowsie, ale na linuxie na pewno nie tak jakbyś tego chciał - prawdopodobnie wywali, ze nie masz takiego katalogu.

Spróbuj odpalić
  1. system('php >>sciezka_do_katalogu_<</cake.php MojeSkrypty sendmail');

Najlepiej podaj pelna sciezke.

Ten post edytował kapslokk 9.12.2016, 10:14:40
Go to the top of the page
+Quote Post
wojtek6000
post
Post #12





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.12.2016

Ostrzeżenie: (0%)
-----


Tzn. kiedy odpalam to w przeglądarce i dam komende ls to wyświetla mi pliki z danego katalogu z serwera.

teraz mój plik wygląda tak:

  1. <?php
  2. // chdir('/cake/bin/');
  3. echo "<pre>".shell_exec("ls")."</pre>";
  4. //echo shell_exec("./cake.php Hello");
  5.  
  6. //system("sh /start.sh");
  7.  
  8. echo "<pre>".system('php.exe /cake/bin/cake.php MojeSkrypty sendmail')."</pre>";
  9. echo "<pre>".system('php /cake/bin/cake.php MojeSkrypty sendmail')."</pre>";
  10.  
  11.  
  12. echo "<pre>".system('php.exe /cake/bin/cake MojeSkrypty sendmail')."</pre>";
  13. echo "<pre>".system('php /cake/bin/cake MojeSkrypty sendmail')."</pre>";
  14.  
  15.  
  16. ?>


i zwraca mi taki błąd:

sh: php.exe: command not found sh: php: command not found sh: php.exe: command not found sh: php: command not found
Go to the top of the page
+Quote Post
kapslokk
post
Post #13





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Jak odpalasz z przeglądarki to skrypt "juz jest w odpowiednim katalogu" cron odpala go z konsoli i dlatego nie bangla tak jak trzeba.
php.exe nie dziala bo to nie windows.
Zamień
  1. echo "<pre>".system('php /cake/bin/cake.php MojeSkrypty sendmail')."</pre>";

na
  1. echo "<pre>".system('php56-cli /cake/bin/cake.php MojeSkrypty sendmail')."</pre>";
i dodatkowo przed /cake wstaw sciezke BEZWZGLEDNA do tego katalogu - komenda pwd przez ssh albo echo (__DIR__); w skrypcie php.
Go to the top of the page
+Quote Post
wojtek6000
post
Post #14





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.12.2016

Ostrzeżenie: (0%)
-----


Jesteś genialny:D Wszystko działa według twoich zaleceńsmile.gif Bardzo dziękuję za pomoc:D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 19:02