Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] CRON - co możne się znajdować w pliku cron.php
Forum PHP.pl > Forum > Przedszkole
LukaszBar
Mam pytanie odnośnie CRONa. Robię to pierwszy raz w życiu i jest to dla mnie duży problem. Wszędzie gdzie czytałem na ten temat były informacje jak uruchomić plik cron.php - na szczęście dostawca hostingu zadbał o to żeby było to łatwe i przyjemne (tu wpisz adres pliku, tu kiedy ma się wykonywać, a tu czy chcesz logi). Problemem jest to co w takim pliku może się znajdować?

Pomysł jest taki żeby codziennie o powiedzmy 23:30 automatyczny skrypt sprawdził sobie w bazie MySQL czy status jest odpowiedni i jeżeli nie to zmienił go na odpowiedni.
w zamyśle wygląda to tak:

  1.  
  2. #!/usr/bin/php5
  3. <?php
  4. $dbhost = "localhost";
  5. $dbuser = "mojanazwa";
  6. $dbpass = "mojehaslo";
  7. $dbname = "nazwabazy";
  8.  
  9. $db = mysqli_connect($dbhost,$dbuser,$dbuser,$dbname);
  10.  
  11. $czas = date('H:i:s');
  12.  
  13. $checkStatus = "SELECT * FROM czaspracy WHERE status !=2 AND czas='$czas'";
  14. $result = mysqli_query($db,$checkStatus);
  15.  
  16. while ($row = $result->fetch_array()) {
  17. UPDATE czaspracy SET status = 2 WHERE czas = '$czas';
  18. }


Moje pytanie jest takie czy to ma szanse zadziałać? nie wiem czy coś takiego się wykona w cron.php a nie mogę działać metodą prób i błędów bo serwer służbowy i kilka innych zadań na nim się cyklicznie odbywa (nie ja robiłem - jakiś zewnętrzny programista) i nie mogę położyć serwera albo zapętlić w nieskończoność mojego skrypciku co by nie zamulić wszystkiego.

Z góry dzięki za porady/poprawki i proszę o wyrozumiałość dla laika.
Lord
Cytat(LukaszBar @ 16.02.2017, 11:36:49 ) *
Mam pytanie odnośnie CRONa. Robię to pierwszy raz w życiu i jest to dla mnie duży problem. Wszędzie gdzie czytałem na ten temat były informacje jak uruchomić plik cron.php - na szczęście dostawca hostingu zadbał o to żeby było to łatwe i przyjemne (tu wpisz adres pliku, tu kiedy ma się wykonywać, a tu czy chcesz logi). Problemem jest to co w takim pliku może się znajdować?

Pomysł jest taki żeby codziennie o powiedzmy 23:30 automatyczny skrypt sprawdził sobie w bazie MySQL czy status jest odpowiedni i jeżeli nie to zmienił go na odpowiedni.
w zamyśle wygląda to tak:

  1.  
  2. #!/usr/bin/php5
  3. <?php
  4. $dbhost = "localhost";
  5. $dbuser = "mojanazwa";
  6. $dbpass = "mojehaslo";
  7. $dbname = "nazwabazy";
  8.  
  9. $db = mysqli_connect($dbhost,$dbuser,$dbuser,$dbname);
  10.  
  11. $czas = date('H:i:s');
  12.  
  13. $checkStatus = "SELECT * FROM czaspracy WHERE status !=2 AND czas='$czas'";
  14. $result = mysqli_query($db,$checkStatus);
  15.  
  16. while ($row = $result->fetch_array()) {
  17. UPDATE czaspracy SET status = 2 WHERE czas = '$czas';
  18. }


Moje pytanie jest takie czy to ma szanse zadziałać? nie wiem czy coś takiego się wykona w cron.php a nie mogę działać metodą prób i błędów bo serwer służbowy i kilka innych zadań na nim się cyklicznie odbywa (nie ja robiłem - jakiś zewnętrzny programista) i nie mogę położyć serwera albo zapętlić w nieskończoność mojego skrypciku co by nie zamulić wszystkiego.

Z góry dzięki za porady/poprawki i proszę o wyrozumiałość dla laika.



  1. [php]
  2.  
  3. #!/usr/bin/php5
  4. <?php
  5. $dbhost = "localhost";
  6. $dbuser = "mojanazwa";
  7. $dbpass = "mojehaslo";
  8. $dbname = "nazwabazy";
  9.  
  10. $db = mysqli_connect($dbhost,$dbuser,$dbuser,$dbname);
  11.  
  12. $czas = date('H:i:s');
  13.  
  14. $checkStatus = "UPDATE czaspracy SET status = 2 WHERE status !=2 AND czas='$czas'";
  15. $result = mysqli_query($db,$checkStatus);
  16.  
  17.  


Troche spiący jestem ale trochę nie wiem po co pobierać te dane a potem robić update, chyba te zapytanie zrobi to samo tongue.gif

A co do zamulenia to nie ma tutaj możliwośći "zapętlenie skryptu" przecież to tylko 1 zapytanie SQL.
LukaszBar
No i właśnie to miałem na myśli mówiąc ze laikiem jestem. Nie pomyślałem, że to przecież samo w bazie poszuka sobie wszystkich rekordów i je pozmienia.
w sumie to są obawy ze odpalę cron i coś się posypie na serwerze, ale skoro nie ma co to OK. ale przetestuje i tak w jakiś luźniejszy dzień kiedy w razie co szybciej postawimy wszystko na nowo smile.gif

Dzięki za odpowiedź!
emstawicki
Ogólna uwaga:
Nie używaj nieprzetestowanych skryptów / zapytań kiedy masz obawy, że coś możesz popsuć.
Zrób kopię bazy danych i na lokalnym komputerze / serwerze testowym, albo na innej bazie danych (testowej) wgraj ten dump. Następnie, albo w skrypcie zmień dane na nową bazę, albo zamiast wykonywania zapytań SQL wyświetl je, albo zapisz do pliku (nie musisz czekać na 23:50 smile.gif - możesz uruchomić skrypt z konsoli, albo z poziomu przeglądarki). To pozwoli Tobie bezpiecznie przetestować Twój skrypt.

A najlepiej to posiadać zawsze środowisko deweloperskie i produkcyjne, nawet jeżeli będą one na tym samym hostingu, ale będą miały osobną bazę i katalog możesz spokojnie testować rozwiązania itp.
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.