Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nakładanie skryptów
Forum PHP.pl > Forum > Przedszkole
adi456
Witam

Walcze z problemem nakładania się skryptów tzn skrypt ładuje się poprzez js czasem co kilka ms w wziązku z czym zdaża się że skrypt jest odpalony jednocześnie 3 razy.

chciałbym koljkować tzn gdy skończy się wykonywać to dopiero odpala się następny raz.

ciasteczka nie dają rady
obecne rozwiązanie ale mało wydajne to:

  1. for($i=0;$i<900;$i++) {
  2. if(file_exists('blokada'.$id_sklep)) sleep(1); else break;
  3. }
  4. $fp = fopen('blokada'.$id_sklep, "a+"); flock($fp, 2); fwrite($fp, 'ok'); flock($fp, 3); fclose($fp);
  5.  
  6. // tu kod który ma sie wykonać
  7.  
  8. unlink('blokada'.$id_sklep);


proszę o podpowiedz, nie wiem czy szukać innego rozwiązania czy próbować np zamiast 1s wstawić jakieś ms?
Aqu
Jeżeli sprawdzasz to dla jednego użytkownika, to możesz zastosować sesje.
adi456
sesja tez nie bedzie działać bo z tego co obesrwowałem to 1 wywłoanie skryptu przez js to 1 sesja , 2 wywowałanie to już 2 sesja
Pyton_000
Ale Ty chcesz kolejkować wywołania czy chcesz pominą wywołania które się nakładają i odpalać dopiero kolejne po tym jak się wykona poprzednie odrzucając te pomiędzy.
adi456
nie pomijać tylko wstrzymywać dopóki poprzednie nie skończą swojego działania, przykład np kolejki do kasy w sklepie.
Pyton_000
No dobra czyli kolejkowanie.
A co robi ten skrypt.
adi456
do zapisywania towaru który jest zczytywany skanerem kodów kreskowych

- dodaje zeskanowany towar do mysql
- łaczy w 1 pozycje te same kody (sumuje ilości)
- wczytuje nazwe (z mssql)
- wyświetla ostatnio wczytaną pozycje
- opcja grupowania
- podsumowanie razem w kazdej grupie
- kasowanie pojedynczego / grupy / wszystkiego
Pyton_000
To tu chyba faktycznie tylko taka proteza. Można ładnie to zapisać:
  1. while(file_exists('scan.lock'))
  2. usleep(500);
  3.  
  4. file_put_contents('scan.lock','', LOCK_EX);
  5.  
  6. //
  7.  
  8. unlink('scan.lock');
adi456
ok dzięki za info
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.