Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Optymalizacja zapisu do bazy danych, zapis danych w pętli
zibideusz
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 14.05.2009

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


Witam serdecznie (IMG:style_emoticons/default/smile.gif)

Jak zwykle piszę z problemem. Otóż mój skrypt wykonuje pętle (while) i przy każdym wykonaniu zapisuje dane do bazy. Skrypt wykonuje się do momentu przekorczenia czasu wykonywania. Chodzi po prostu o to, by pętli wykonało się jak najwięcej, nie chcę ograniczać tego do konkretnej wartości, bo w zależności od danych raz potrafi przejść 5 pętli, a innym razem 30.

No i sporo już myślałem nad tym, w jaki sposób ominąć zapisywanie danych co każdą pętlę (generuje to spore obciążenia). Pomsł mam taki, by dane przechowywać w tablicy i w odpowiednim momencie (przed zakończeniem czasu wykonywania) zapisać do bazy. Wymagałoby to porównywania czasu rozpoczęcia pierwszej pętli z obecnym i na przykład po upływie 50 sekund przerwać pętlę i zrobić zapis.

Są jeszcze jakiś inne sposoby?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Cytat
Wykonywanie zapytań co kilka kroków jest o tyle zła, że niektóre dane nie zostaną zapisane. Na przykład ustawię zapisywanie co 3 pętle, wykona mi 10 pętli, wtedy tracę dane z wykonania ostatniej. A tego nie chcemy smile.gif

Zauważ, że dzięki warunkowi || $i == $count - 1 zostaną zapisane wszystkie dane:
  1. if(($i > 0 && $i%10 == 0) || $i == $count - 1) {


EDIT
Choć wtedy trzeba troszkę zmodyfikować kod:
  1. $i = 1;
  2. $count = count($data);
  3. $sql = 'INSERT INTO `tabela` VALUES';
  4. while($i-1 < $count) {
  5. $sql .= '('.$data[$i-1]['id'].', "'.$data[$i-1]['username'].'"),'; // itd.
  6. if($i%10 == 0 || $i-1 == $count - 1) {
  7. $sql = substr($sql, 0, -1);
  8. mysql_query($sql);
  9. $sql = 'INSERT INTO `tabela` VALUES';
  10. }
  11. }


Co do Twojego pomysłu, to co będzie z danymi, które nie zostaną przetworzone? Wznowisz wykonywanie skryptu?

Ten post edytował mortus 31.08.2011, 10:10:42
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 13:05