Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pętla laguje
Majcon
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 27.11.2012
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


Witam napisałem pętlę która wysyła wiadomość do tysiąca osób następnie sprawdza czy zostały jakieś osoby do których dojdzie wiadomość jeśli tak to wysyła jeszcze raz hm chyba najlepiej będzie jak pokaże kod

  1. $txt = "jakiś tekst";
  2. do{
  3. $pobranie_numerow= $db->query("SELECT `number` FROM `users` WHERE `wyslano` = '0' ORDER BY `id` ASC LIMIT 1000");
  4. $la = $pobranie_numerow->num_rows;
  5. while($pn = $pobranie_numerow->fetch_assoc())
  6. {
  7. $numery[] = $pn['number'];
  8. }
  9. allsay($txt, $numery);
  10. $q = $db->query("UPDATE `users` SET `wyslano` = '1' WHERE `wyslano` = '0' ORDER BY `id` ASC LIMIT 1000");
  11. $numery = array();
  12. sleep(1);
  13. } while($la > 0 && $la <= 1000);
  14. ?>


Problem wtym że od wpisania komendy do wysłania mija jakieś 15 sekund (IMG:style_emoticons/default/biggrin.gif) Jest możliwość przerobienia tego aby szybciej działało?

Ma ktoś jakiś pomysł albo jak inaczej to skonstruować innej pętli użyć
Go to the top of the page
+Quote Post
sazian
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


1)to $numery = array(); daj przed pętlą while
2)po co sleep ?
3)ile jest rekordów ?
Go to the top of the page
+Quote Post
Majcon
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 27.11.2012
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


aktualnie jest 1600 tylko że jedna wiadomość może dojść jednorazowo do 1000 i musi być przerwa minimum jedna sekunda dlatego to sleep()
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 17:23