Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
971 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Découpez un fichier xml

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Découpez un fichier xml

n°2057034
Magg27
Posté le 15-02-2011 à 17:07:16  profilanswer
 

Bonjour,

 

J'ai un site qui tourne sur un hébergement perso chez ovh. Ce site permet d'uploader des fichiers xml pour ensuite traiter les données contenues. Il y a des fichiers qui contiennent énormément d'infos à extraire. A partir d'un certain nombre d'infos, ce processus dépasse le time out fixé par ovh (30 secondes) et le traitement est alors interrompu. Apparemment sur un serveur mutualisé il n'y a pas moyen d'allonger ce time out donc la solution n'est pas de ce côté là ... Je pense alors découper mes fichiers XML en plusieurs parties pour les traiter en plusieurs fois. Pour cela je pense compter le nombre de lignes d'un fichier et le diviser par le nombres d'infos digéreables en 30 secondes. Par exemple un fichier de 10 mille lignes sera découpé en 20 fichiers. Mon problème est donc la mise en pratique ... Avez-vous une astuce pour faire ça ?

 

Merci


Message édité par Magg27 le 15-02-2011 à 17:08:42
mood
Publicité
Posté le 15-02-2011 à 17:07:16  profilanswer
 

n°2057200
esox_ch
Posté le 16-02-2011 à 08:51:10  profilanswer
 

ça dépend de la structure de ton XML... c'est quoi les premiers nodes?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2057216
rufo
Pas me confondre avec Lycos!
Posté le 16-02-2011 à 09:52:32  profilanswer
 

T'as moyen d'utiliser le cron sur ton serveur? Il me semble que le timeout n'est valable que quand un script php est exécuté par apache mais pas si le script est exécuté par php en ligne de commande. L'idée serait d'avoir un système d'upload puis un script php appelé depuis le cron qui regarde s'il y a un fichier xml à traiter. Une fois le fichier xml traité, il est supprimé (ou déplacé) pour pas être traité à nouveau...
 
edit : 2ème solution : faire traiter le fichier xml par un exe en C, l'exe pouvant être appelé depuis le script php. Pour ça, la commande shell_exec() (ou toute autre commande du type exec) doit être autorisée.


Message édité par rufo le 16-02-2011 à 09:55:13

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2057421
Magg27
Posté le 16-02-2011 à 22:47:55  profilanswer
 

Merci pour vos réponses :). J'ai essayé mon idée mais elle ne marche pas. Vu que les fichiers XML sont découpés, ils n'ont plus la même structure, du coup il y a un bug lorsque je lance le parseur ...
@rufo : oui, j'ai moyen d'utilisé le cron sur mon serveur. S'il n'y a pas de time out dans ces cas là ça peut être une super idée, il faut que j'essaye. Néamoins j'aimerais que le fichier posté par l'utilisateur soit exploitable de suite sans attendre le prochain cron ...
L'idée du script en C peut être pas mal mais il faudrait que je puisse communiquer des variables php à mon script C (par exemple le nom du fichier xml) et inversement (pour récupérer les données traitées).
Sinon je pensais à trouver un parseur XML plus rapide.. Actuellement, j'utilise celui là : http://eusebius.developpez.com/php5dom/ Au pire en utilisant les expressions régulières en scannant le fichier ligne par ligne, est-ce que ça serait plus rapide que DOM ?
 
Mes fichiers XML sont des fichiers GPX contenant des infos sur des points GPS (latitude, longitude, altitude, heure d'enregistrement). Ils sont plus ou moins gros selon la longueur du tracé. Actuellement, parser un fichier de 1,5 Mo contenant environ 10 mille points dépasse le time out d'ovh ...

n°2057470
rufo
Pas me confondre avec Lycos!
Posté le 17-02-2011 à 10:56:55  profilanswer
 

Trouver un parser plus rapide ne te fera pas gagner beaucoup de temps :/
 
Pour passer des infos de php à l'exe en C ben via la ligne de commande :

Code :
  1. MonExeEnC.exe Arg1 Arg2...


Pour rappel, le main() du C contient justement 2 paramètres qui sont le nb de paramètres en entrée et un tableau contenant les paramètres ;)

Code :
  1. int main ( int argc, char *argv[])
  2. {
  3. ...
  4. }


 
Pour le cron, tu peux le faire lancer toutes les minutes voire toutes les x secondes (en prenant soin de vérifier que le fichier n'est pas en cours d'écriture durnat l'upload)... Ca serait relativement transparent pour l'utilisateur.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Découpez un fichier xml

 

Sujets relatifs
Création de fichier multiplesdans quel fichier inclure mabibli.h
[VBA Excel] Copie de données d'un fichier vers un autreproblème macro import fichier text excel
SPIP: afficher le fichier css selectionnéParser un fichier BibTex pour l'insérer dans une bdd MySQL
déterminer le nombre de lignes d'un fichier texte[Batch] Script de comptage du nombre d'occurrences dans un fichier
Bash - curl - Upload fichier via http[PHP]Envoyer une fichier à un utilisateur sans lui donner l'adresse
Plus de sujets relatifs à : Découpez un fichier xml


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR