IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Traitement d'un (très) grand nombre d'images [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Traitement d'un (très) grand nombre d'images
    Bonjour à tous,

    afin de ne pas vous déranger pour rien cela fait maintenant près de 3 jours que je recherche la solution à mon problème dans presque tout '"l'internet" !!!

    Je vous expose mon problème :

    Un solution php (médiathèque) avec un très grand nombre d'images à traiter (+ de 10 000), j'arrive à réguler presque toutes les facettes du site sauf une : GD !

    peu importe comment je fais, le serveur me bloque sur la conversion des images (création de 2 miniatures + watermark).

    Solution envisagés et qui ont échouées (ne rigolez pas j'ai 'presque' tout essayé !) :

    • sleep() --> aucun effet
    • redirection en par echo 'JS' --> aucun effet
    • redirection en par php --> aucun effet
    • ...


    Je précise que le script fonctionne sans problème pour 10, 20, 50, ... images jusqu'à ce que sa plante ! pas forcément timeout 60 sec d’ailleurs !

    avez-vous déjà eu ce problème ? comment l'avez-vous résolu ?

    D'avance merci !

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Je précise que le script fonctionne sans problème pour 10, 20, 50, ... images jusqu'à ce que sa plante ! pas forcément timeout 60 sec d’ailleurs !
    Quel message d'erreur ?

    avez-vous déjà eu ce problème ? comment l'avez-vous résolu
    En utilisant PHP en ligne de commandes : http://www.php.net/cli
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Quel message d'erreur ?


    En utilisant PHP en ligne de commandes : http://www.php.net/cli

    "504 Gateway Time-out" ou dépassement de mémoire

    Je précise que je suis en mutu pro chez ovh donc je suis pas sure que je puisse utiliser le php en ligne de commande et de toute façon la charge serveur (%cpu et mémoire) serai grande quand même.

    Y a t il une solution pour 'temporiser' mon script sans surcharge cpu (sleep fait tourner le cpu et vide la mémoire) mais provoque quand même un okiller ovh !

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Je précise que je suis en mutu pro chez ovh
    Je suppose que c'est un gros traitement initial et qu'ensuite les nouveaux articles seront traités "au fil de l'eau".
    Donc travail à faire en local et images traitées à uploader.

    Y a t il une solution pour 'temporiser' mon script sans surcharge cpu (sleep fait tourner le cpu et vide la mémoire) mais provoque quand même un okiller ovh !
    Traitement par paquets avec un cron toutes les X minutes. Mais fais plutôt comme dit précédemment.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Traitement en local, bonne idée, il faut juste que j'arrive à le faire admettre au client !
    à moi de voir !

    Si quelqu'un a une super autre idée je suis preneur sinon je me rabattrai sur ta solution.

    Merci

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 383
    Points : 10 411
    Points
    10 411
    Par défaut
    Oui effectivement comme dit Seb, il faudrait mieux gérer tes erreurs pour connaître la cause du problème.

    Un des problème du redimensionnement d'images est qu'il consomme pas mal de mémoire. Faudrait peut-être voir du côté de l'organisation de ton script et faire des bench mémoire pour voir ce qui se passe.

    Mais clairement évidemment avec +10000 images à traiter tu seras au minimum confronté à max_execution_time si tu veux les traiter de manière classique sur un serveur distant sans possibilité de configuration.

    Dans ces cas là tu pourrais éventuellement penser à un cron qui fasse des traitement par lots.

    Sinon dans d'autres topic assez ressemblants, certains on imaginés de faire la redimension de chaque image uniquement la première fois qu'elle est appelée. En somme c'est le premier visiteur qui déclenche la tâche automatique. Suivant les cas cela peut être une solution intéressante.

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par julienroux Voir le message
    Traitement en local, bonne idée, il faut juste que j'arrive à le faire admettre au client !
    Pourquoi ? Il y a un traitement récurrent de 10 000 images ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Sinon dans d'autres topic assez ressemblants, certains on imaginés de faire la redimension de chaque image uniquement la première fois qu'elle est appelée. En somme c'est le premier visiteur qui déclenche la tâche automatique. Suivant les cas cela peut être une solution intéressante.
    Je vais partir sur quelque chose dans ce style pour par charger trop le serveur en une fois.

    Merci à tous, pour moi le sujet est résolu

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 383
    Points : 10 411
    Points
    10 411
    Par défaut
    Et pour les images suivantes si tu n'en upload pas beaucoup en même temps, tu pourrais faire le redimensionnement lors de l'upload.
    Si besoin il y a une classe d'upload ici conçue pour cela.

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci pour la proposition pour l'upload mais il est fait en ftp car entre 5 000 et 10 000 fichier one shot c'est un peu suicidaire en upload, même bien géré !!!

    Je garde tout de meme le principe pour une autre fois, merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Manipulation de très grands nombres
    Par BernardT dans le forum Langage
    Réponses: 6
    Dernier message: 07/07/2006, 16h26
  2. Précision d'un très très grand nombre
    Par sniperseb dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2006, 19h38
  3. Réponses: 2
    Dernier message: 22/12/2005, 18h16
  4. Trés grand nombre
    Par rteuteu55 dans le forum C++Builder
    Réponses: 10
    Dernier message: 15/11/2005, 11h28
  5. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo