Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Dodawanie co 15 minut danych do określonej komórki.
Forum PHP.pl > Forum > Przedszkole
Wicepsik
Witam,
Mam w bazie danych 22400 graczy. Chciałbym wykonywać skrypt przez CURL co 15 minut.
Na stronie z której będę pobierać wyniki jest strona z graczami którzy są online.
Dany gracz ma nick Darkrose. Oczywiście jak jest na stronie z graczami online to dodaje, jeśli nie to nic nie dodaje. Chciałbym tam gdzie jest komórka Darkrose dodać liczbę 15.

Jak mogę to zrobić? Mam bardzo mało doświadczenia z php i mysql.

PS. Ile można trzymać wyników w 1 tabeli? Mam 22400 i nie chce mi dalej dodać.
TomASS
Cytat
Chciałbym wykonywać skrypt przez CURL co 15 minut.

Jak cyklicznie to cron.

Cytat
Na stronie z której będę pobierać wyniki jest strona z graczami którzy są online.

Jeśli nie jest to strona na Twoim serwerze, to tak jak piszesz - CURL

Cytat
Chciałbym tam gdzie jest komórka Darkrose dodać liczbę 15.

Dodać do pola "czas" czy do pola "nick"?
Cytat
Jak mogę to zrobić?

Ale co? Dodawanie?
Cytat
Mam bardzo mało doświadczenia z php i mysql.

Czytaj, czytaj czytaj .... spokojnie znajdziesz wszystko w necie, podpowiadam:

- cykliczne wywoływanie - cron
- pobieranie strony - curl
- wpisywanie do bazy danych - mysql_query

Cytat
Ile można trzymać wyników w 1 tabeli?

A jaką znasz największą liczbę?

Cytat
Mam 22400 i nie chce mi dalej dodać.

A jaki błąd zwraca MySQL? Możesz mieć któreś z pól liczbowych zadeklarowane tak, że nie pomieści większych liczb.
Wicepsik
Cytat(TomASS @ 3.04.2009, 00:19:30 ) *
Dodać do pola "czas" czy do pola "nick"?
Pole czas. Jeżeli jest gracz na stronie na której będę sprawdzać to dodaje do pola czas +15.
TomASS
Zapytanie SQL do bazy danych:
  1. UPDATE tabela SET Czas=Czas+15 WHERE Nick='Darkrose';
Wicepsik
Cytat(TomASS @ 3.04.2009, 22:45:12 ) *
Zapytanie SQL do bazy danych:
  1. UPDATE tabela SET Czas=Czas+15 WHERE Nick='Darkrose';



  1. UPDATE nick SET czas=czas+15 WHERE nick='".$matches[1][$i]."'";

Co jest w tym złego?


takim zapytaniem dodawałem osoby (50,000 nicków do bazy)
  1. INSERT INTO nick VALUES ('','".$matches[1][$i]."')
Fifi209
  1. INSERT INTO nick VALUES ('','".$matches[1][$i]."')


Tak byłoby lepiej:
  1. INSERT INTO `nick` VALUES(NULL, "'.$matches[1][$i].'")
(o ile pierwsze pole to auto_increment

Cytat(Wicepsik @ 3.04.2009, 23:35:33 ) *
  1. UPDATE nick SET czas=czas+15 WHERE nick='".$matches[1][$i]."'";

Co jest w tym złego?


Może pomyliłeś się przy apostrofach/cudzysłowach ? Pokaż jak wygląda to w php. winksmiley.jpg

Cytat(Wicepsik @ 2.04.2009, 23:06:22 ) *
PS. Ile można trzymać wyników w 1 tabeli? Mam 22400 i nie chce mi dalej dodać.


Nie pamiętam ile mieści int ale możesz spróbować z bigint
A najlepiej przy tak dużej bazie skorzystaj z postgresql
Wicepsik
  1. UPDATE nick SET czas='czas+15' WHERE nick='".$matches[1][$i]."'

Już wiem co było źle. Teraz inny problem. W polu czas dodało mi czas+15
A jak zrobić, jeżeli w polu czas jest liczba 15 i chce dodać do tej liczby znów 15 ?
TomASS
Czy pole "czas" ma typu liczbowego? Bo jak pojawił Ci się tam string "czas+15" to masz pole tekstowe a nie liczbowe. Daj dokładnie tak jak napisałem:

  1. UPDATE tabela SET Czas=Czas+15 WHERE Nick='Darkrose';

Bez apostrofów przy "Czas", dla Ciebie to będzie wyglądało tak:

  1. UPDATE nick SET czas=czas+15 WHERE nick='".$matches[1][$i]."'



Cytat
Nie pamiętam ile mieści int ale możesz spróbować z bigint

Tutaj masz wszystko napisane
Cytat
A najlepiej przy tak dużej bazie skorzystaj z postgresql

Że co? A niby czemu? 23 tyś to duża baza? Ilość danych które pomieszczą INTy (big/small/itd...) są takie sam dla MySQL i Posta...
Wicepsik

Tak mam. Nie dodaje liczb. Owszem, lepiej by było gdyby to było dodawane w formie godziny. Czyli co 15minut dodaje, gdy ktoś jest online 1h to przy wyświetlaniu pokazuje 01:00 h
Mam 50 tysięcy rekordów.

decha-design
to zamiast varchar daj int ... bedzie lepiej
Wicepsik
Początkowa wartość time = 00:00
Co 15 minut odpalam skrypt i jeżeli ktoś online to dodaje 00:15
00:45 + 00:15 = 01:00
Dało by rade coś takiego wykombinować? biggrin.gif

//edit
Zmieniłem za TIME i działa biggrin.gif


Inne pytanie.
  1. Jak zrobić skrypt dostosowany do daty, czyli dzisiaj 04.04.2009 to wstawia do konkretnej kolumny a jutro 05.04.2009 to wstawia do innej kolumny automatycznie?
  2. Zrobić kolumny na cały rok?

/edit2
Jest 00:45 h i dodaje 15 i nie wyświetla się 01:00 .... czemu? :/
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.