Ik ben ongeveer een 3/4 jaar Yii developer en al ruim 10 jaar PHP.
Het volgende is het probleem:
Ik wil een csv bestand importeren. Het bestand bevat 1400 regels en dit moet verdeeld worden over diverse tabellen (models).
De import neemt nu ongeveer 8 minuten in beslag, wat natuurlijk veel te lang is. Mijn ervaring met php is ook dat dit veel sneller moet kunnen.
De omgeving is een Linux Ubuntu (recentste versie), 4GB intern, PHP 5.3, Apache icm FastCGI module
Na het goed bekijken van de log file (CWebLogRoute) zag ik dat een sql command ongeveer 0,06 seconden duurt. Aangezien voor 1 regel ongeveer 6 sql commands nodig zijn, komt dit uit op 0,36 seconden per regel x 1400 = 504 seconden --> 8 min
Opzich allemaal logisch de berekening. Ik heb al gebruik gemaakt van het createCommand->execute (DAO) ipv de gebruikelijke "save" van het model.
Ik hoor graag of mensen nog goede tips en tricks voor mij hebben
Misschien is het beter om de queries intern bij te houden en aan het einde van het script in 1 of 2 grote queries uit te voeren. Als ik grote bestanden moet importeren en verwerken is dat meestal mijn uitweg.