Bonjour,
soit un script PHP insérant des enregistrements dans une base de données MySql. PHP calcule la valeur de trois entiers, puis insère une ligne dans la base de données. Cela est répété 18.000 fois. Au final, 18.000 enregistrements sont insérés, et l'exécution dure un quart d'heure sur ma machine.
Durant l'exécution (en ligne de commande), le processus mysqld utilise 1 à 10% du processeur et php.exe 0 à 2% (ainsi qu'une quantité négligeable de mémoire).
J'ai tenté de décomposer les traitements pour identifier ce qui prenait du temps.
Résultat :
_le script PHP seul (cad le script initial auquel l'unique ligne mysql_query a été retirée) : 1 seconde
_18.000 enregistrements seuls (tels que ceux insérés par le script initial) : 2 minutes via un script SQL contenant 18.000 instructions "insert into"; 3 minutes via un script PHP contenant une itération sur l'instruction "insert into" répétée 18000 fois.
En résumé :
les calculs compliqués réalisés par PHP sont exécutés quasi-instantanément; l'insertion dans la base de valeurs aléatoires (ne relevant pas d'un calcul compliqué) via un script PHP et l'instruction MySql_query() demande environ 3 minutes.
Pourquoi faut-il une quinzaine de minutes pour exécuter ces deux opérations ensemble ?
Ma configuration est :
Vista Home Basic
PHP 5
MySql 5.1
Apache 2.2
Merci.
Partager