Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]wykonywanie zapytania MySql okresowo
Forum PHP.pl > Forum > PHP
Dr.VaNs
Witam,

pisze sobie wtyczke do CMS'a która będzię mi czyścić automatycznie historie czytanych newsów,


kod sql mam taki:


$zapytanie = dbquery("UPDATE ".$db_prefix."news SET news_reads='0'");

I zabardzo coś mi nie wychodzi z normalnymi metodami okresowymi, może ja coś źle robie, więc nie będę się chwalił tu kodem który nie działa.

Głównie mi o to chodzi aby takie zapytanie wykonywało się co 120 h

Pozdro
fuul
Polecam użycie crona.
Dr.VaNs
A bez crona nie da się?
Prym
jak bez crona to tylko na zasadzie łopatologicznej smile.gif w skrypt który ci czyści te newsy wstawiasz tworzenie i wstawienie czegokolwiek do pliku zapisanie w jakims katalogu na dysku.
i teraz przed skryptem pobierasz date modyfikacji pliku dodajesz do istniejacej daty 120 godzin sprawdzasz czy przekroczyło wzgledem aktualnej godziny jak tak to skrypt winksmiley.jpg moge zapewnic ze działa bo sam uzywałem/am tam gdzie crona nie ma albo z jakiegos powodu wole kodowo panowac nad aktualizacja. oczywiscie data jest sprawdzana za kazdym wejsciem na strone (minus całego przedsiewziecia bo "spowalnia" -niezauwazalnie wczytywanie strony)

acha 120 godzin to jest 60*60*120 = 432000 sekund (sekund*minut*godzin) które dodajemy do daty pobranej z pliku przy pomocy funkcji filemtime()

mam nadzieje ze naprowadziłem na jakies rozwiązanie - wostatecznosci zawsze mozesz robic aktualizowanie wiersza w bazie danych z polem timestamp (mysql) i opierac sie na tej dacie zamiast na pliku z serwerka twój wybór smile.gif powodzenia
Dr.VaNs
W sumie też rozwiązanie ale jak się okazało na serwerze jest CRON. Serwer jest z home.pl


Jak mam zbudować plik CRON aby to działało?

Plik cron-weekly.php

CODE

$link = mysql_connect('localhost', 'user', 'pass')

or die('Nie można się poł±czyć: ' . mysql_error());

$result = mysql_query("UPDATE ".$db_prefix."news SET news_reads='0'");

$result = mysql_query("UPDATE ".$db_prefix."articles SET article_reads='0'");



print ('Historia Newsów i Artykułów wyczyszczona.');
mysql_close($link);




?>


em1X
Przeciez ten plik ma wygladac tak jak zwykly plik php. Polacz sie z baza, wywolaj zapytanie i wszystko. Umiesc ten plik w katalogu glownym na serwerze, a cron go uruchomi raz na tydzien.
Dr.VaNs
Zrobiłem ten plik ale coś nie działa, więc chyba zakładam że coś z nim nie tak. Kod jest post powyżej.
PawelC
Zobacz tak
Kod
$link = mysql_connect('localhost', 'user', 'pass')

               or die('Nie można się poł±czyć: ' . mysql_error());

$result = mysql_query("UPDATE '.$db_prefix.' news SET news_reads='0'");

$result = mysql_query("UPDATE '.$db_prefix.' articles SET article_reads='0'");

Dlaczego masz dwie, $result skoro każda robi co innego??
Dr.VaNs
Niedziała..... tzn jak ręcznie wchodze w plik przez przeglądarke.


co do tych 2 result to przypadek ze mam takie same bo cudowalem roznie z tym,
ale z 2 roznymi tez nie dziala.
PawelC
Kod
$link = mysql_connect('localhost', 'user', 'pass')

               or die('Nie można się poł±czyć: ' . mysql_error());

$result = mysql_query("UPDATE '.$db_prefix.' news SET news_reads='0'");

$result = mysql_query("UPDATE '.$db_prefix.' articles SET article_reads='0'");

A gdzie jest mysql_select_db żeby wybrać bazę danych?? Jest połączenie i zapytanie, ale gdzie jest wybranie bazy danych??
Dr.VaNs
U fakt nie ma, w sumie chyba dlatego nie działa.


Kod ogólnie po wszystkich poprawkach wygląda:
CODE

$link = mysql_connect('localhost', 'user', 'pass')

or die('Nie można się poł±czyć: ' . mysql_error());

$result = mysql_query("UPDATE ep_news SET news_reads='0'");

$resulta = mysql_query("UPDATE ep_articles SET article_reads='0'");



?>




Tylko nie wiem jak zastosowac tą funkcje od wyboru bazy....
PawelC
Cytat
Tylko nie wiem jak zastosowac tą funkcje od wyboru bazy....

mysql_select_db(nazwa bazy);
Dr.VaNs
Teraz działa,

dzięki za wszelką pomoc.

Pozdro
cicik
Ja się tylko wtrącę i powiem, że najbliższa wersja mysqla ma umożliwiać tworzenie prac okresowych. Czyli definiujesz zapytaniem, ze raz na ilestam dni mysql ma uruchomić zdefiniowana komende.
franki01
Cytat(cicik @ 14.10.2007, 09:25:30 ) *
Ja się tylko wtrącę i powiem, że najbliższa wersja mysqla ma umożliwiać tworzenie prac okresowych. Czyli definiujesz zapytaniem, ze raz na ilestam dni mysql ma uruchomić zdefiniowana komende.



Byloby ciekawie, ale pewnie wiekszosc serwerow (przynajmniej damrowych) by takie cos blokowala, zeby nie zapchac przypadkiem serwera
PawelC
Cytat(franki01 @ 14.10.2007, 21:32:25 ) *
Byloby ciekawie, ale pewnie wiekszosc serwerow (przynajmniej damrowych) by takie cos blokowala, zeby nie zapchac przypadkiem serwera

Ale powiem Ci że czasami darmowy serwer daje nam więcej niż jakiś płatny, sam się o tym przekonałem. Pożyjemy, zobaczymy jak to z tym będzie.
cicik
Cytat(franki01 @ 14.10.2007, 21:32:25 ) *
Byloby ciekawie, ale pewnie wiekszosc serwerow (przynajmniej damrowych) by takie cos blokowala, zeby nie zapchac przypadkiem serwera


Znając życie to wcale nie będzie największy problem. Większą przeszkodą jest to, że od momentu wydania nowej wersji mysqla do jej zainstalowania na polskich hostingach mija 1,5+ roku.
franki01
Cytat(cicik @ 14.10.2007, 23:08:47 ) *
Znając życie to wcale nie będzie największy problem. Większą przeszkodą jest to, że od momentu wydania nowej wersji mysqla do jej zainstalowania na polskich hostingach mija 1,5+ roku.



Ale jezeli uzytkownicy beda sie nadmiernie czepiac albo przenosic sie na zagraniczne hostingi, to nie pozostanie polskim nic, jak zainstalowac najnowsza wersje, bo inaczej beda stratni..
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.