Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Jak to przyspieszyć?
busterek
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

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


Mam taki prosty skrypt:

  1. <?php
  2.  
  3. $con = mysql_connect('localhost', 'user', 'haslo');
  4. mysql_select_db('mailing');
  5.  
  6.  
  7. $file = file('/srv/www/newmailing/log2');
  8.  
  9. foreach ($file as $line)
  10. {
  11. $data = explode(' -> ', $line);
  12. $mail = $data[1];
  13. $query = 'update emails set sent = "1" where sent = "0" and email = "'.$mail.'";';
  14. mysql_query($query);
  15. }
  16. ?>


W zaczytywanym pliku jest ponad 330.000 linii. Czy da się to jakoś przyśpieszyć(IMG:style_emoticons/default/questionmark.gif) Bo działa to sakramencko wolno. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Po pierwsze wywal te mysql_* i zamień choćby na mysqli lub PDO.

Może tak będzie szybciej:

Kod
CREATE TEMPORARY TABLE temptable (
  email VARCHAR,
  INDEX (email)
) ENGINE = MEMORY;

LOAD DATA LOCAL INFILE '/srv/www/newmailing/log2' INTO temptable (column2) FIELDS TERMINATED BY ' -> ';

UPDATE emails JOIN temptable USING(email) SET sent = "1" WHERE sent = "0" AND emails.email = temptable.email;

DROP TEMPORARY TABLE temptable;
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: 3.10.2025 - 09:33