Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: A gdyby tak wywolac jeden skrypt dwa razy w tym samym czasie...
Forum PHP.pl > Forum > PHP
Amarel
Przypuscmy, ze mam skrypt, ktory wykonuje dana operacje w bazie danych, a po tym zapisuje sobie gdzies, ze juz to zrobil i za drugim wykonaniem juz nie bedzie wykonywal tej operacji.
Gdyby wywolac ten skrypt dwukrotnie dokladnie w tym samym czasie ( a jest to mozliwe, jesli sie ma na stronie kilkaset tysiecy uzytkownikow ) to wedlug mojej teorii ta operacja zostanie wykonana dwukrotnie.

Zgadzacie sie z tym? smile.gif Jesli tak jest to jak sie przed tym chronic?
dr_bonzo
HMmm, odpal skrypt z crona - bedzie odpalony tylko raz.
Amarel
Ten skrypt jest uruchamiany tylko i wylacznie przez uzytkownikow strony, ktorzy go wywoluja.
Crona nie ma mozliwosci uruchamiania skryptu co sekunde, a Ajax ma smile.gif
michalg
Cytat(Amarel @ 30.03.2009, 20:30:38 ) *
Przypuscmy, ze mam skrypt, ktory wykonuje dana operacje w bazie danych, a po tym zapisuje sobie gdzies, ze juz to zrobil i za drugim wykonaniem juz nie bedzie wykonywal tej operacji.


Rozumiem, że robisz coś takiego?
1) BEGIN
2) SELECT * FROM wykonane_operacje WHERE operacja = ?
3) wykonanie operacji, jakieś zapisy do różnych tabel itp
4) INSERT (operacja, ..., ...) VALUES (1, ?, ?) INTO wykonane_operacje
5) COMMIT

Rozwiązania:
1) W tabeli, w której zapisujesz tę informacje (wykonane_opeacje) załóż unique na kolumnę (lub kolumny) które identyfikują (w tym przypadku kolumna operacja) to, że dana operacja została już zrobiona. W ten sposób baza danych nie dopuści do zapisania drugi raz tej samej operacji (przy próbie inserta).

2) Zakładanie locka na tabelę wykonane_operacje - między punktem 1 i 2. W ten sposób SELECT z innego skryptu będzie mógł być dopiero wykonany w momencie zwolniania locka (czyli punkt 5). Może spowodować niestety spowolnienie działania całego systemu z powodu oczekiwania na zwalnianie locków!

P.S Nie znam Mysql, ale myślę że takie rzeczy tam są.
Amarel
Dziekuje bardzo za pomysly smile.gif Z pewnoscia sie przydadza.
Jesli ktos ma jeszcze jakies pomysly to chetnie je przeczytam.
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.