Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wykonywanie skryptu o określonej dacie-pomocy.
Forum PHP.pl > Forum > PHP
miccom
Witam.
Mam pytanie. Czy jest możliwość aby skrypt php a w nim zapytania sgl wykonywały się o określonej dacie?
Chodzi mi o to, aby skrypt wykonywał sie cyklicznie codziennie o określonej porze.
Sprawdzał warunek if{}, i jeśli warunek jest spełniony- to wykonuje się z góry określone zadanie?
Tylko proszę mnie nie odsyłać do manuala bo jeszcze nic tam nie znalazłem;/

Z góry dziękuję za podpowiedzi. Pozdrawiam. miccom
nowotny
Do tego musisz mieć serwer z obsługą crona i dodać dany skrypt do niego...

EWENTUALNIE, (i to takie duuuże "ewentualnie" ;D) możesz dodać odpowiednie wpisy do strony głównej... ale jak nikt tego dnia nie wejdzie na stronę główną to skrypt się nie wykona...
miccom
No tak. Mam crona, ale jak ma wyglądać skrypt? Zwykły php? CZy jakis inny ...
webdice
Widzę że nie bardzo wiesz co to cron, więc poczytaj sobie to i to.
miccom
A możesz mi odpowiedzieć na takie pytanie:
Mam webowy interfejs crontab, gdzie ustalam czas wykonania zadania, miejsce edycji do wpisania komendy do uruchomienia, i miejsce z adresem e-mail na który będą wysyłane wyniki wykonanego zadania. I nic więcej. Nie mam na serwerze pliku crona do edycji gdzie mógłbym dodać odpowiedni kod. Czy w miejscu na podanie zadania do wykonania mogę podać ścieżkę do skryptu php?
qrees
Cytat(miccom @ 9.02.2008, 07:37:25 ) *
A możesz mi odpowiedzieć na takie pytanie:
Mam webowy interfejs crontab, gdzie ustalam czas wykonania zadania, miejsce edycji do wpisania komendy do uruchomienia, i miejsce z adresem e-mail na który będą wysyłane wyniki wykonanego zadania. I nic więcej. Nie mam na serwerze pliku crona do edycji gdzie mógłbym dodać odpowiedni kod. Czy w miejscu na podanie zadania do wykonania mogę podać ścieżkę do skryptu php?

jako komendę do wykonania podaj:
Kod
php ścieżka/do/skryptu

Czyli na początku musisz podać php (albo php-cgi jeżeli samo php nie działa).
Virti
ew. spróbuj
Kod
wget ścieżka/do/skryptu
qrees
Cytat(Virti @ 9.02.2008, 10:45:39 ) *
ew. spróbuj
Kod
wget ścieżka/do/skryptu


Jak wget to powinno być:
Kod
wget http://strona.pl/adres.php

Czyli po wget po prostu podajesz cały adres tak samo jak w przeglądarce.
Virti
A faktycznie, sorki, małe przeoczenie winksmiley.jpg
.radex
tylko nie zapomnij o jakimś zabezpieczeniu, np. ustalonego kodu w GET, for example:

Kod
wget http://strona.pl/adres.php?code=LoremIpsum
miccom
Cytat(radex_p @ 9.02.2008, 11:57:34 ) *
tylko nie zapomnij o jakimś zabezpieczeniu, np. ustalonego kodu w GET, for example:

Kod
wget http://strona.pl/adres.php?code=LoremIpsum

A po polsku można winksmiley.jpgquestionmark.gif Ja nie jestem orzeł jeśli chodzi o "to" o czym mówicie. biggrin.gif
qrees
A w ogóle masz zrobiony ten skrypt co ma się wykonywać? jak tak, to zapamiętaj pod jakim adresem jest, a następnie w miejscu gdzie masz wpisać polecenie crona wpisz:
Kod
wget zapamiętany_adres

I tyle. A jak GET'a nie rozumiesz, to proponuje się zapoznać z czymś takim jak manual do php: http://php.net (bardzo przydatny winksmiley.jpg ).
miccom
Cytat(qrees @ 9.02.2008, 13:02:47 ) *
A w ogóle masz zrobiony ten skrypt co ma się wykonywać? jak tak, to zapamiętaj pod jakim adresem jest, a następnie w miejscu gdzie masz wpisać polecenie crona wpisz:
Kod
wget zapamiętany_adres

I tyle. A jak GET'a nie rozumiesz, to proponuje się zapoznać z czymś takim jak manual do php: http://php.net (bardzo przydatny winksmiley.jpg ).

Ale mądrala jesteś? Chcesz pomóc czy się pośmiać??
Mój skrypt do wykonania wygląda tak:
  1. <? include('config.php');
  2. $data= date ('w'); // dzien tygodnia liczbowo
  3. $rok= date ('Y'); // rok
  4. $dzien= date('d');// dni
  5. $miech = date ('n'); // miesiac
  6. $miesiac = array(
  7. 01 => 'Styczeń',
  8. 02 => 'Luty',
  9. 03 => 'Marzec',
  10. 04 => 'Kwiecień',
  11. 05 => 'Maj',
  12. 06 => 'Czerwiec',
  13. 07 => 'Lipiec',
  14. 08 => 'Sierpień',
  15. 09 => 'Wrzesień',
  16. 10 => 'Październik',
  17. 11 => 'Listopad',
  18. 12 => 'Grudzień');
  19.  
  20.  
  21. $date=''.$rok.'-'.$miesiac[$miech].'-'.$dzien.'';
  22. $kod= md5(uniqid(rand()));
  23. $zapytanie = "select * from `rezerwacja` where `data`='$date'";
  24.  
  25. $wykonaj = mysql_query($zapytanie);
  26. while($wiersz=mysql_fetch_row($wykonaj))
  27. {
  28. $username = $wiersz['username'];
  29. $e  = $wiersz['login goscia'];
  30. $status  = $wiersz['status'];
  31. }
  32.  
  33. if($status == 'tak') {
  34.  
  35. $sql="INSERT INTO komentarze (`kod`) VALUES('$kod') WHERE `username`='$username'";
  36. $result1=mysql_query($sql);
  37. }
  38.  
  39. // jesli dodane do tabeli komentarze- wysyłamy e-mail
  40. if($result1){
  41.  
  42. // ---------------- Formularz wysyłania e-mail ----------------
  43.  
  44. // adresat
  45. $to=$e;
  46.  
  47. // Temat
  48. $subject="Dodaj pozytyw firmie z Naszej bazy! ";
  49.  
  50. // Od kogo
  51. $header="from: Administrator bazy <mój e-mail>";
  52.  
  53. // Wiadomość
  54. $message="Witaj ! r\n";
  55. $message.="tralalalla.r\n";
  56. $message.="Jeżeli jesteście zadowoleni z usług ww firmy- dodajcie na Ich konto Wasz punkt pozytywny.r\n";
  57. $message.="Wprowadziliśmy taki system punktacji- aby Inni szukającym mogli zasugerować się ilością pozytywów przy wyborze odpowi
    edniej firmy.r\n"
    ;
  58. $message.="Jeżeli nie macie nic przeciw- pomóżcie innym szukającym w wyborze odpowiednich firm z naszej bazy.r\n";
  59. $message.="Kliknijcie w link poniżej aby dodać punkt pozytywny.r\n";
  60. $message.="http://moja_strona.pl/dodajkomentarz.php?passkey=$kodr\n";
  61. $message.="Dziękujemy - TEAM BFBW";
  62. // wysyłamy e-mail
  63. $sentmail = mail($to,$subject,$message,$header);
  64.  
  65. }
  66.  
  67.  
  68.  
  69.  
  70. ?>



A tak nawiasem gress, czy ten skrypt sie wykona?? Napisz czy będzie działał, a jeśli nie- to napisz co zmienić aby był dobry.

Format daty w bazie danych w rekordzie 'data' to '2008- Luty-15' np.
Odnośnie CRONA już się dowiedziałem, w poleceniu wpisuję php adres_skryptu.php Ale proszę o sprawdzenie kodu.
nowotny
Cytat(miccom @ 9.02.2008, 23:57:14 ) *
Format daty w bazie danych w rekordzie 'data' to '2008- Luty-15'

Sorry, ale już gorszego nie mogłeś wymyślić...? :/ od tego jest typ danych DATETIME czy TIMESTAMP żeby z nich korzystać...
miccom
Cytat(nowotny @ 10.02.2008, 00:05:16 ) *
Sorry, ale już gorszego nie mogłeś wymyślić...? :/ od tego jest typ danych DATETIME czy TIMESTAMP żeby z nich korzystać...

No niestety nie mogłem;/
Taki czas dodaję z checkbox, których w formularzu mam 365,
Dziwi mnie to, że jak pytam na forum- jak to najlepiej zrobić- to nie ma chętnego który pomoże- Ale jak już zrobiłem skrypt który dodaje daty- to teraz wszyscy piszą że do tego jest inna funkcja;/ Dzięki za pomoc;/
Virti
Cytat
jeśli piszę bzdury- pisz do mnie na PV. Poprawię się

Z Twojej sygnaturki. Rozumiem, że jak ktoś publicznie wytyka Ci błędy to już jest be?

Cytat
Ale jak już zrobiłem skrypt który dodaje daty- to teraz wszyscy piszą że do tego jest inna funkcja

Człowiek uczy się na błędach.

Co do poprawności działania skryptu, możesz przecież go sprawdzić wywołując normalnie poprzez przeglądarkę.
Pozdrawiam.

Edit:
A jeśli chodzi o get:
  1. <?php
  2. echo $_GET['o'];
  3. ?>

Wywołanie takiego skryptu poprzez adres: skrypt.php?o=test spowoduje wyświetlenie się "test"

Jako zabezpieczenie możesz to wykorzystać np. aby użytkownik z zewnątrz nie mógł tego skryptu wykonać. Wtedy masz pewność, że skrypt uruchamia się cyklicznie, a nikt inny nie ma na to wpływu.
miccom
Ok. Więc: sygnaturę zmieniłem;)
Ludzie, którzy chcą pomagać słabszym, nie są be. Ale jeśli gość w odpowiedzi wrzuca tylko link do manuala( traktując tym samym usera jako gościa, który nie zagląda nigdzie i od razu pyta;/) Ja za każdym razem zaglądam do mauala, mam go na kompie w wersji off line, ale uważam że jest do kitu jak kursy podane w przedszkolu. Na każdym z nich byłem- i to jest kopia jednego kursu;/ nawet przykład ten sam;/ pipen i gracze,bee.
Ale nie o tym chciałem...
Wracając do skryptu.
Nie ma znaczenia kto zainicjuje wykonanie tego skryptu ( nawet myślałem aby wrzucić go na pierwszą stronę- i jakikolwiek user wywoła wykonanie, ale skrzynka pocztowa by mi się zapchała;)
A jak wywołam skrypt przez url, to nic się nie dzieje. Ani błędu, nic.
Dlatego prosiłem o przeanalizowanie kodu- bo może (mimo błędu) nic się nie wyświetli.
Dziękuję za dotychczasową pomoc.
Virti
no to, jeżeli nie wyświetla żadnego błędu to chyba dobrze, tak? Sprawdź czy maile dochodzą i masz skrypt sprawdzony. Spróbuj też pobawić się error_reporting" title="Zobacz w manualu PHP" target="_manual.
miccom
ok. CRON działa, ale czy może ktoś przeanalizować mój skrypt powyżej?? Proszę...

up^

Nikt nie pomoże??
A tak fajnie sie gadało...
Virti
Nie rozumiem Ciebie.
Czy przy wykonywaniu tego skryptu dostajesz jakiekolwiek błędy? Nie?
Czy w takim razie maile dochodzą tak, jak się tego spodziewasz? Tak?
Wychodzi na to, że skrypt jest w porządku.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.