Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykonywanie skryptu co jakiś czas.
Forum PHP.pl > Forum > PHP
ratosluaf
Cześć, chciałbym zrobić skrypt, który zapisuje dane do bazy danych, albo pliku (co lepsze dla malutkiej ilości danych). Rozumiem, że mam to zrobić w cronie.
Co zrobić, aby użytkownik przypadkiem natrafiając na ten skrypt nie mógł go otworzyć? Czy to możliwe?

W drugim pliku php mam pobrać te dane z bazy danych / pliku, tak?

Albo jak zrobić to tak, że mam zewnętrzny hosting bez crona, a na moim pobieram co 5 minut zawartość (file_get_contents) i zapisuję go?
pedro84
Cytat(ratosluaf @ 26.01.2013, 23:00:08 ) *
Cześć, chciałbym zrobić skrypt, który zapisuje dane do bazy danych, albo pliku (co lepsze dla malutkiej ilości danych). Rozumiem, że mam to zrobić w cronie.
Co zrobić, aby użytkownik przypadkiem natrafiając na ten skrypt nie mógł go otworzyć? Czy to możliwe?

Umieścić go nad katalogiem dostępnym z poziomu www.

Cytat(ratosluaf @ 26.01.2013, 23:00:08 ) *
W drugim pliku php mam pobrać te dane z bazy danych / pliku, tak?

Jakim drugim pliku?

Cytat(ratosluaf @ 26.01.2013, 23:00:08 ) *
Albo jak zrobić to tak, że mam zewnętrzny hosting bez crona, a na moim pobieram co 5 minut zawartość (file_get_contents) i zapisuję go?

Nie rozumiem o co Ci chodzi.
ratosluaf
Więc chodzi mi o to, że mam dwa hostingi, oddzielne. Na jednym mam skrypt, na drugim mam forum - na serwerze z forum nie mogę postawić skryptu, gdyż mam zablokowane porty. Na serwerze ze skryptem nie mam crona.

Więc chciałem na serwerze zrobić skrypt, który pobierał by zawartości kilku plików, i wrzucał je do mysql. A w drugim skrypcie pobierałbym te wartości i wypluwał na forum.
pedro84
Cytat(ratosluaf @ 26.01.2013, 23:34:23 ) *
Więc chodzi mi o to, że mam dwa hostingi, oddzielne. Na jednym mam skrypt, na drugim mam forum - na serwerze z forum nie mogę postawić skryptu, gdyż mam zablokowane porty. Na serwerze ze skryptem nie mam crona.

Więc chciałem na serwerze zrobić skrypt, który pobierał by zawartości kilku plików, i wrzucał je do mysql. A w drugim skrypcie pobierałbym te wartości i wypluwał na forum.

I z czym masz problem, bo dalej nie łapię? Sensowne rozwiązanie, aczkolwiek sensowniejsze byłoby zmienienie hostingu na taki, co takie podstawy jak CRON daje wink.gif
aras785
Jeśli dobrze Cię rozumiem to robisz tak:
FORUM
ustawiasz cron co 5minut na skrypt na drugim serwrze (a w cron.php sprawdzasz skad pochodzi lub jakis klucz uzyj by pozwolic na uruchomienie)



SKRYPT

cron.php -> ten skrypt pobiera coś co 5 minut i zapisuje do zapisane.txt, później wysyła curl_post do pliku na forum, który nazywał by się odbierz.php (podczas przesyłania sprawdzić czy skąd pochodzi post i wtedy zapisujesz na serwerze gdzie masz forum)
ratosluaf
Można bardziej łopatologicznie?
Ustawiam crona na http://moja.strona/skrypt.php
Skrypt pobiera dane z serwera gry (liczbę graczy, czas grania, itd - to już jest).
Skrypt zapisuje te dane do bazy danych

Ja z forum pobieram te dane za pomocą nowego skryptu i wstawiam je w odpowiednie miejsca w kodzie tak?

O co chodzi z curl_post?
Wytłumacz mi proszę, o co biega w tym zdaniu:
Cytat
(a w cron.php sprawdzasz skad pochodzi lub jakis klucz uzyj by pozwolic na uruchomienie)
aras785
Dałem przykład. Jeśli możesz się łączyć zdalnie do swojej bazy mysql (forum) to od razu zapisuj po pobraniu i tyle roboty.
ratosluaf
Wyskrobałem coś takiego:
  1. <?php
  2. $mysqli = new mysqli("host", "user", "haselko", "baza");
  3. if ($mysqli->connect_errno) {
  4. echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
  5. die;
  6. }
  7. $sidebar = file_get_contents("http://rxxl/asd.php");
  8. $gracze = file_get_contents("http://rxxl/gracze.php");
  9. $hostname = file_get_contents("http://rxxl/hostname.php");
  10.  
  11. $query = "INSERT INTO tabela_serwerow VALUES (".$sidebar.", ".$gracze.", ".$hostname.")";
  12.  
  13. mysqli_query($con, $query);
  14. ?>


Co tu jest źle?
kristaps
Co w ogóle zwraca $sidebar, $gracze, itd?
Cytat
Co tu jest źle?

Łatwiej będzie jeśli przetestujesz skrypt i podasz jaki występuje błąd.
ratosluaf
  1. <?php
  2. $con = mysql_connect("localhost","xx","xx");
  3. mysql_select_db("xx", $con);
  4.  
  5.  
  6. $sidebar = file_get_contents("http://ratosluaf.website.pl/asd.php");
  7. $gracze = file_get_contents("http://ratosluaf.website.pl/gracze.php");
  8. $hostname = file_get_contents("http://ratosluaf.website.pl/hostname.php");
  9.  
  10.  
  11. $sql = "INSERT INTO tabela_serwerow (sidebar, gracze, nazwa) VALUES (".$sidebar.",".$gracze.",".$hostname.")";
  12. $result = mysql_query($sql);
  13.  
  14. if($result){
  15. echo("<br>Input data is succeed");
  16. } else{
  17. echo("<br>Input data is fail");
  18. }
  19.  
  20. ?>

Trochę zmodyfikowałem.
Co zwracają? Kod html. Gdy zamiast zmiennych dam "asd" - dane wchodzą do bazy.
Znalazłem błąd, leżał w niejednoznacznym użyciu cudzysłowiów pojedyńczych i podwójnych.
kristaps
Bo pewnie nie chcesz wrzucać całego kodu html do rekordu. smile.gif
ratosluaf
Jednak nadal jest problem. Gdy pobieram listę graczy - wystarczy, że gracz będzie miał w nicku " ' " lub " " ", wtedy wszystko przestaje działać. Jak można temu przeciwdziałać?
kristaps
Apostrof, cudzysłów, itd. to znaki specjalne, trzeba je escapować. Zainteresuj się mysql_real_escape_string i stripslashes.
ratosluaf
Przyuważyłem jeszcze jeden błąd.
Jeżeli gracz ma nick "/nick", to pokazuje samo "/", w mysql jest jeszcze "/nick"
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.