Bonjour a tous !
je developpe un script php qui doit parser un tas de flux rss (a distance) et sauvegarder ces données dans une table mysql (en local)
Tous les matin, j'ai un cron qui lance une fonction du genre:
Mon probleme est que l'execution est trop longue....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $listRss = getAllRssURLFromByDB(); //Je recuperer depuis ma BDD locale toutes mes url de flux rss foreach($listRss as $rssURL) { //pour chaques url $dataToPutOnLocalDB = parseRSS($rssURL); //Je parse le flux (avec curl and co) et j'obtien un array de données sql_insertDataOnDatabase($dataToPutOnLocalDB); //puis je sauvegarde ces données dans ma BDD locale }
J'ai iniatialisé mon serveur avec ces valeurs:
Mais rien n'y fait, j'ai des erreurs du type "Maximum execution time exceeded" et "MySQL server has gone away"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ini_set('mysqli.reconnect', 'On'); ini_set('max_allowed_packet', '128M'); ini_set('memory_limit', '128M'); ini_set('max_execution_time', '200');
Mon soucis est qu'a la fin, je vais avoir dans ma base de données des centaines d'url de flux rss a parser et a enregistrer...
Le temps d'execution va donc augmenter...
Pour resoudre ce probleme, je pensais utiliser le multi threading (comme en C#, java...).
Pensez vous que de lancer 1 thread par parsing RSS (j'entends ce qu'il y a dans ma boucle foreach) pourrai resoudre mon probleme et augmenter les performances de mon script ?
Bon but étant d'etre capable de lancer tous ces calculs et eviter les erreurs du type "Maximum execution time exceeded" et "MySQL server has gone away"?
Comment faire ca en php (un bon tuto ou une classe qui gere tout facilement serai le bienvenue) ?
Et je suis bien sur ouvert a toutes autres propositions pouvant m'aider a resoudre ce probleme...
Merci bien !
Peter
Partager