FAQ |
Kalender |
|
![]() |
#1 | |||
|
||||
Mycket flitig postare
|
||||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
Tack! Ska testa lite.
Mina filer är faktiskt på runt 30 - 70mb (produktlistor från nelly och ellos från tradedoubler). Man kan, om man vill, skräddarsy sin produktlista (välja vilka "kolumner?" som ska vara med i xml filen, då kan den blir några mb mindre, men det är inte alltid det går - man kanske vill ladda ner en annans butiks xml fil från annat affiliate sida). Som sagt, ska kolla lite på detta. Tack! ![]() |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Klarade millennium-buggen
|
En annan, mer ren kodoptimering är att köra switch() istället för if().
switch() är "snabbare" än if() i ren optimering, samt gör koden mer läsbar. "continue" hoppar över hela iterationen och påbörjar nästa istället. PHP-kod:
|
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Klarade millennium-buggen
|
Min fråga är varför du inte bearbetar data lokalt i din lokala databas innan du skickar upp informationen?
Om du gör: Kod:
INSERT Into NyTabell ( col1, col2, col3... ) SELECT col1, col2, col3... FROM GammalTabellen WHERE gender in (select gender from GenderTabellen) Senast redigerad av Conny Westh den 2012-10-11 klockan 04:04 |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Mycket flitig postare
|
Tack, Jonas!
Conny, hur menar du? Kom ihåg - jag är nybörjare. Vad menar du med "lokal databas"? xampp på datorn? Hur ska det fungera när man kör live? :P Förstår att jag missförstår dig nu. Helst skulle jag vilja göra såhär: Köra allt med php, men efter ett visst antal rader som blivit insatta i databasen, så ska det skrivas ut något - laddar kanske? Därefter så fortsätter den att ladda upp datan igen. Men problemet är ju att servern läser filen uppifrån och ned, och utför inget förren allt har bearbetats. Så, om jag skriver echo någonstans i koden, och det finns mer kod nedanför, så uträttas inte det förren hela sidan är färdig, eftersom - vad jag förstår - så bearbetas all php kod i servern, och sen skickar servern en ren html sida till webbläsaren, som sedan visar upp den till mig. Det vill säga - Allt som finns i koden måste bearbetas, utföras mm, innan servern skickar html koden till webbläsaren. har jag rätt? Jag vill iaf komma bort från att sidan får error pga. långa laddningstider och mycket minne. |
||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Mycket flitig postare
|
Citat:
Funkar ok i Firefox, dock ej i vissa versioner av IE. |
|||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Du använder XML-filer för överföring av gigantiska datamängder, men du borde först bearbeta ditt data lokalt och sedan bara skicka upp förändringar (inte hela databasen) varje gång du gör en överföring till din webbshop. När du får datafilen från din leverantör (är det Nelly? och Ellos?) så bör du importera det i din lokala databas först. Du hade i din PHP-kod en massa villkor för att filtrera bort data vid importen, och det borde du filtrera bort INNAN du skickar upp datatfilen till din webbshop, all data som du filtrerar bort tar ju tid att skicka upp och kostar bandbredd i onödan. Du bör ha en databastabell för "gender" och en för "category" med en kolumn som innehåller de värden som du vill filtrera bort. Det var det jag visade exempel på i SQL-satsen hur man på ett enkelt sätt kan göra det. Du bör undvika att använda PHP för databaslogiken, utan lös den logiken med SQL i stället. SQL är hundratals gånger snabbare och effektivare än att först ladda upp alla onödiga data över internet och sen filtrera i ett okompilerat script-språk som PHP. Senast redigerad av Conny Westh den 2012-10-12 klockan 13:58 |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Klarade millennium-buggen
|
Något du bör kunna göra är att ändra memory_limit i PHP.
Dessutom kan du ju fundera på att ladda upp filerna med ftp. |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
30-70 mb, hur många rader data?
Kolla alternativet med FTP som nämnts. Det går att ansluta till ftp servern från php script. Hursomhelst är det inte lämpligt att använda webbformulär för så stora filer. Men gör så att du delar upp detta i två delar 1, filuppladdning på något vis till servern, kolla om de t.ex kan ftp:a till en mapp på din server 2, ett php script som hanterar den uppladdade filen, detta kan mest lämpligen göras så att ett cron jobb körs med jämna mellanrum. För övrigt så använd transaktioner med databasfrågorna. Annars kan du få korrupt data. Vad gäller databasfrågorna så misstänker jag de tar rätt lång tid. Testa att ta tid på de olika frågorna. Tabelltyp är den MyISAM eller InnoDB? Ett eventuellt alternativ är att ta bort eventuella index på 'products' tabellen innan du kör alla inserts. Och sen lägga tillbaka index efter inserts, men det tenderar att bli rätt avancerat. Kolla om det finns index på dessa kolumner där "where" används: SELECT id, advertiserProductUrl FROM products WHERE `new` = 1 DELETE FROM products WHERE fresh = 0 |
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Mycket flitig postare
|
Erik: Tack, det vore ju ett alternativ kanske
![]() Danjel: Filerna innehåller 10 000+ produkter - ca.15 rader per produkt. Jag har inga problem hos Binero, där fungerar det både att hämta xml filen via url (ladda upp via ftp, och sen hämta xml adressen), det går även bra att ladda upp via en <input type="file" utan problem. Men jag har inlett ett samarbete med en kille som har City Network, och där failar den hela tiden - 1) går inte att hämta filer via en url (oavsett om filen ligger på samma server eller inte. 2) tar det för lång tid så dör servern. "För övrigt så använd transaktioner med databasfrågorna. Annars kan du få korrupt data." - vad menar du med det? ![]() Det är av typen MyISAM. Jag har 3 index typer i tabellen Products. 1) BTREE - ID (you know..) 2) BTREE - URL (för att förhindra dubletter vid input) 3) FULLTEXT - INFO (Fulltext sökningsförmåga) "Kolla om det finns index på dessa kolumner där "where" används:" - ehm. say what what? ooh! nej, inget index på varken new eller fresh. as you can se. Vill tacka alla som försöker hjälpa en krokad person som mig! ![]() |
||
![]() |
![]() |
Svara |
|
|