lancer des batch

WRInaute occasionnel
Bonjour,
j'ai une page php très longue à éxécuter car elle traite un catlogue xml de +de 20.000 produits qu'elle ajoute en bdd. Lorsque je lance cette page, j'ai deux problèmes :
- toutes les ressources de mon VDS sont allouées à cette page et donc, le site est lent.
- j'ai un time out, meme en indiquant en début de script que cette page peut bénéficier d'un temps d'éxécution plus long.

y a-t-il des moyens de résoudre ces deux problèmes ?
Merci
 
WRInaute occasionnel
c'est ce que je fais à la main mais le fichier est mis à jour toutes les nuits et je ne me vois pas me lever toutes les nuits pour le faire ;-) a moins qu'il y ai un moyen de le couper en X automatiquement..., de récupérer les noms des fichiers et de lancer mon script x fois...
 
WRInaute accro
Il n'y a pas moyen d'allouer un certain pourcentage du cpu pour ton bash afin de ne pas surcharger le serveur ? J'ai juste entendu ça, je n'en suis pas sure :)
 
WRInaute accro
20 000 lignes dans le meme fichier xml !! waouuu, apres tu grognes parce que ca rame !! puis comme dit Rog, le rapport avec un batch ?
coupe ton fichier par thematique.. a oui, j'avais oublié, tu as fais toute tes lectures a partir du meme fichier XML.. tout a refaire en gros. dur dur!!
..puis la nuit, pas besoin de se lever pour des mises a jour, les taches CRONs nous aident à garder nos heures de sommeil.

bon courage
 
WRInaute occasionnel
pour le batch, je me disais que il était possible de lancer le script non pas en interactif mais en batch, cad, avec moins de ressources. dsl, j'ai utilisé les mauvais mots.

a quoi sert de mettre un tempo toutes les 10 iterations ?


KOogar a dit:
coupe ton fichier par thematique..

je ne peux pas couper le fichier par thématiques car je n'en suis pas l'auteur; il s'agit d'un catalogue de e-commerçant dont je suis affilié.

KOogar a dit:
a oui, j'avais oublié, tu as fais toute tes lectures a partir du meme fichier XML.. tout a refaire en gros. dur dur!!

que veux-tu dire ????
 
WRInaute occasionnel
tu as une commande en php qui s'appelle timeout() ou tu peux donner un certain temps d'execution en secondes.

Je pense que ca peut t'aider :)
 
WRInaute accro
JeromeRookie a dit:
je ne peux pas couper le fichier par thématiques car je n'en suis pas l'auteur; il s'agit d'un catalogue de e-commerçant dont je suis affilié.

Le catalogue est un flux xml ??

si oui, tu dois recuperer le catalogue a partir du fichier et le monter en base sql. La tu verras qu'il y a plusieurs thematique donc tu pourras decouper le catalogue en plusieurs tables. Ensuite tu actualises tes tables la nuit par taches CRONs, si tu as bien fait plusieurs tables, les mises a jour seront tres rapide.
et pour terminer,tu te sert des tables sql pour afficher les datas aux clients.
 
WRInaute occasionnel
intéressant ta proposition.
a ce jour, je lis et traite directement chaque enregistrement du fichier xml.
je n'ai pas essayé ta proposition de le faire en deux fois :
- écrire le fichier xml en base.
- le traiter

ce serait plus rapide ?
existe-t-il une instruction pour "monter" le flux xml en bdd en une fois, ou faut-il faire une boucle ?
 
WRInaute accro
Intiutivement ? quel genre d'operation pouvons nous faire a partir d'un fichier de datas de 1 Mo ?
Afficher les datas directement a partir de ce fichier est inpensable, si nous voulons ne pas ratatiner le serveur. Nous pouvons par contre le decouper et stocker les datas dans des tables sql, ou pourquoi pas, a travers d'autres fichiers XML.
Les mises a jour seront hyper rapide, car la tache sera maintenant d'aller chercher seulement les derniers elements du fichier data.xml.
Cette methode, qui fera le bonheur de qui sait la lire, permet des fonctionnalités etonnante si le decoupage des datas est pertinant (search, datas a jour...)
 
WRInaute impliqué
je ne comprends pas votre volonté de vouloir partitionner dans plusieurs tables et encore moins par thématiques
20000 lignes dans une table pour mysql c'est de la rigolade
par contre 20000 update ou insert sur un VDS normal que cela explose le CPU surtout que Mysql à besoin de beaucoup de mémoire
alors déjà pour commencer il te faut un set_time_limit(0) => plus de timeout
ensuite pourquoi pas temporiser avec sleep(1) que le moteur ne chauffe pas trop
ou alors utiliser nice pour lancer ton script en mode basse consommation (d'ordonnencement) => man nice

ensuite si c'est chaque jour que tu mets à jour le meme xml et qu'il y a très peu de différences, ca vaut le coup de détecter les changements pour minimiser les requetes inutiles...
 
WRInaute accro
julienr a dit:
je ne comprends pas votre volonté de vouloir partitionner dans plusieurs tables et encore moins par thématiques
20000 lignes dans une table pour mysql c'est de la rigolade
par contre 20000 update ou insert sur un VDS normal que cela explose le CPU surtout que Mysql à besoin de beaucoup de mémoire
alors déjà pour commencer il te faut un set_time_limit(0) => plus de timeout
ensuite pourquoi pas temporiser avec sleep(1) que le moteur ne chauffe pas trop
ou alors utiliser nice pour lancer ton script en mode basse consommation (d'ordonnencement) => man nice

ensuite si c'est chaque jour que tu mets à jour le meme xml et qu'il y a très peu de différences, ca vaut le coup de détecter les changements pour minimiser les requetes inutiles...

En general, on fait la premiere grosse mise a jour en local si l'on n'a pas un serveur dédié perso, puis ensuite les mise a jour des derniers éléments se font en ligne.
donc pas besoin de set_time_limit().
Puis "ensuite pourquoi pas temporiser avec sleep(1) que le moteur ne chauffe pas trop" ca fait bricolage. Tu compte avoir une fenetre en permanante overte pour tes mise a jour ?
...et avoir 1 table ou 100 tables SQL, c'est un choix discutable selon les besoins de l'application.
 
WRInaute passionné
20000 entrées sur un fichier texte, c'est pas la mort pour php

je pense que le probleme vient du parseur xml

rog
 
WRInaute impliqué
tiens aller je vais répondre :roll:

KOogar a dit:
En general, on fait la premiere grosse mise a jour en local si l'on n'a pas un serveur dédié perso, puis ensuite les mise a jour des derniers éléments se font en ligne.
donc pas besoin de set_time_limit().
là il dit qu'il a un VDS, il est libre, sauf qu'il a pas la puissance d'un dédié

KOogar a dit:
Puis "ensuite pourquoi pas temporiser avec sleep(1) que le moteur ne chauffe pas trop" ca fait bricolage. Tu compte avoir une fenetre en permanante overte pour tes mise a jour ?
non non y a la clim en générale ;)
 
WRInaute accro
rog a dit:
20000 entrées sur un fichier texte, c'est pas la mort pour php

je pense que le probleme vient du parseur xml

rog

pourquoi un probleme de parseur ?

et si chaque "entrées" fait 100 Ko ?
100 * 20 000 = 2 000 000 ko = 200 Mo

c'est pas dur de comprendre qu'aucun cas n'est identique et que l'on ne peut pas faire de generalité...

julienr a dit:
KOogar a dit:
Puis "ensuite pourquoi pas temporiser avec sleep(1) que le moteur ne chauffe pas trop" ca fait bricolage. Tu compte avoir une fenetre en permanante overte pour tes mise a jour ?
non non y a la clim en générale ;)

Au moin on l'air conditionné !! :)
 
WRInaute passionné
@KOogar

et si chaque "entrées" fait 100 Ko ?
100 * 20 000 = 2 000 000 ko = 200 Mo

c'est cairement hors contexte, ils s'agit d'un xml d'un catalogue de 20 000 produits, sont poids doit beaucoup plus s'approcher de 2 MO que de 200 MO

et je suis persuadé que c'est la façon dont le script php traite le xml qui ralenti le server

rog
 
WRInaute accro
rog a dit:
@KOogar

et si chaque "entrées" fait 100 Ko ?
100 * 20 000 = 2 000 000 ko = 200 Mo

c'est cairement hors contexte, ils s'agit d'un xml d'un catalogue de 20 000 produits, sont poids doit beaucoup plus s'approcher de 2 MO que de 200 MO

et je suis persuadé que c'est la façon dont le script php traite le xml qui ralenti le server

rog

si ta 3000 kanards qui vont lire en meme temps le meme flux, faut pas s'etonner que ca rame aux heures de pointes... aspirer les données et les retraiter est la meilleure parade à ce genre de probleme...
on s'en fout du parseur, ils ont tous le meme algo de base...
 
WRInaute passionné
@koogar

si ta 3000 kanards qui vont lire en meme temps le meme flux,

t'es encore une fois hors contexte :

il n'y en a pas 3000 ni 300 ni même 30 personnes qui accèdent simultanément au fichier

j'ai personnellement regardé le code de plusieurs parseurs xml en php et il m'est clairement apparu que l'aspect "ressources utilisées" a été fortement négligé

à la suite de quoi je rajouterai que mysql n'est pas forcément la meilleure solution pour la rapidité de traitement de données
 
WRInaute accro
rog a dit:
@koogar

si ta 3000 kanards qui vont lire en meme temps le meme flux,

t'es encore une fois hors contexte :

il n'y en a pas 3000 ni 300 ni même 30 personnes qui accèdent simultanément au fichier

il s'agit d'un catalogue de e-commerçant dont il est affilié. Si c'est -sony, ca depasse alegrement les 3000...
tu es trop casse coui.. a toujours prendre le contre pied, on avance pas.
 
WRInaute passionné
c'est pas l'histoire d'etre casse couil..

si tu sors du contexte tu ne peux pas diagnostiquer

tu multiplies par 100 la première contrainte et par 100 la deuxème

rog
 
WRInaute accro
rog a dit:
c'est pas l'histoire d'etre casse couil..

si tu sors du contexte tu ne peux pas diagnostiquer

tu multiplies par 100 la première contrainte et par 100 la deuxème

rog

ok, je te laisse le dernier mot :D :D a moi l'apéro !!

je :arrow: []
 
Discussions similaires
Haut