![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 18.12.2007 Ostrzeżenie: (10%) ![]() ![]() |
Witam.
Pisze skrypt w .php ktory ma za zadanie stworzyc obrazek, a zarazem go zcache'owac tak by kazde kolejne uruchomienie skryptu nie wykonywalo ponownie operacji. Wiec moze pokaze co aktualnie mam, i co sie dzieje nie tak.
Problem polega na tym, że uzywam tego skryptu w grze, gdzie u KAZDEJ osoby co 60 sekund jest wykonywany ten skrypt. Teoretycznie sa uruchamiane w tej samej milisekundzie, jednakze czasem sa male opoznienia, fakt. Jednakze, przy 11 osobach online, skrypt jest uruchamiany 11 razy, jednak komendy w IFie sa wykonywane 3-5razy Tak, jest postęp, niestety jak to zabezpieczyć by czesc skryptu uruchomila sie dokladnie RAZ, podczas gdy u innych zostanie jedynie wyswietlony zapisany wczesniej obrazek? Z gory dziekuje za pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
to może zamiast time:
http://php.net/manual/en/function.microtime.php |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 18.12.2007 Ostrzeżenie: (10%) ![]() ![]() |
to może zamiast time: http://php.net/manual/en/function.microtime.php No tak, tylko jak filemtime'm moge zwrocic czas modyfikacji w mikrosekundach? Ew. inny sposob na cachowanie obrazka ? Ten post edytował konradmm 23.04.2015, 16:55:51 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%) ![]() ![]() |
Uzyj file_exists i filemtime, to wystarczy aby wykonać to czego potrzebujesz.
Filemtime porównujesz z time(). |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 18.12.2007 Ostrzeżenie: (10%) ![]() ![]() |
Uzyj file_exists i filemtime, to wystarczy aby wykonać to czego potrzebujesz. Filemtime porównujesz z time(). Z tego co napisalem, porownuje filemtime z time() file_exists nie ma w tym przypadku znaczenia bo ten plik istnieje ZAWSZE. Problem nastepuje bo ten sam skrypt jest wykonywany DOKLADNIE w tym samym momencie, wiec zakladajac ze kazdy uzytkownik jest taki sam, skrypt wykona sie w tej samej milisekundzie... Wiec tu pytanie jest do was, jak moge w inny sposob dac link do obrazka KTORY jest skryptem w GD, tak by skrypt sie wykonal DOKLADNIE raz? P.s. niestety nie wchodzi w gre pisania oddzielnego skryptu php ktory bylby wykonywany cronem raz na minute. Musze sobie poradzic w 1 pliku. Ten post edytował konradmm 23.04.2015, 21:39:18 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Możesz wrzucać flagę do bazy i użyć trans-akcyjności, choć na 99% dobrze stosując mikrotime() problem by się rozwiązał.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 18.12.2007 Ostrzeżenie: (10%) ![]() ![]() |
Możesz wrzucać flagę do bazy i użyć trans-akcyjności, choć na 99% dobrze stosując mikrotime() problem by się rozwiązał. mógłbyś bardziej rozwinąć temat? zaznaczę, że jestem noobkiem jesli chodzi o PHP (IMG:style_emoticons/default/haha.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Możesz powiedzieć w jaki sposób "wywołujesz" skrypt xxx razy dokładnie w tej samej sekundzie?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 18.12.2007 Ostrzeżenie: (10%) ![]() ![]() |
Możesz powiedzieć w jaki sposób "wywołujesz" skrypt xxx razy dokładnie w tej samej sekundzie? Gra, w ktorej uzywam obrazka jako banner gildii, posiada auto odswiezanie tego obrazka co minute. W ten sposob kazdy kto jest ONLINE, wywoluje ten sam skrypt w momencie odswiezenia. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Tak, ale to nie oznacza że wszyscy odświeżają w tym samym momencie.
Poza tym co się tam takiego zmienia że musi być co minutę? Jeśli na prawdę chcesz coś z tym zrobić to możesz zrobić kolejkę. Dzięki czemu pierwszy request zrobi obrazek a kolejne z kolejki odczytają cache. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 18.12.2007 Ostrzeżenie: (10%) ![]() ![]() |
Tak, ale to nie oznacza że wszyscy odświeżają w tym samym momencie. Poza tym co się tam takiego zmienia że musi być co minutę? Jeśli na prawdę chcesz coś z tym zrobić to możesz zrobić kolejkę. Dzięki czemu pierwszy request zrobi obrazek a kolejne z kolejki odczytają cache. wlasciwie to jednak oznacza ;D Jak robie zapytanie ile jest online osób na TeamSpeaku, to w tej samej sekundzie jest dajmy na to wykonywanych 100-120 requestow, co zarazem oznacza, podlaczenie sie 120 guest query do serwera i zlagowanie ;p Co do tej kolejki... To jest cos wbudowanego w PHP'a ? Czy musze wykorzystac jakas klase przez kogos napisana? Prosilbym o wiecej info (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Generuj obrazek w cronie, a użytkownicy niech go tylko wyświetlają. W takiej sytuacji zawsze będziesz miał tylko 1 proces generujący obrazek.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 18.12.2007 Ostrzeżenie: (10%) ![]() ![]() |
Generuj obrazek w cronie, a użytkownicy niech go tylko wyświetlają. W takiej sytuacji zawsze będziesz miał tylko 1 proces generujący obrazek. Problem co do tego jest taki, ze w przypadku gdy lacze sie z baza mysql JEDNOKROTNIE dla roznych uzytkownikow, chce by te dane mi cachowal (raz na 24h) dodatkowo. Twoj pomysl by zadzialal gdybym nie potrzebowal tego cachowania, a jedynie wyswietlac te same dane dla kazdego uzytkownika |
|
|
![]()
Post
#14
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
Przed rozpoczeciem generowania nowego obrazka, dodaj jakis tymczasowy plik. Na poczatku skryptu sptawdzaj czy on istnieje, i jesli tak, to czekaj z generowaniem az on zniknie (np. 0,5 sec). Po wygenerowaniu obrazka na nowo, kasuj ten plik zeby zdjac blokade.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 12:31 |