Script qui importe des images - Localhost OK, serveur PAS OK, Pourquoi ?

WRInaute discret
Salut tout le monde,

Je rencontre un problème depuis une semaine avec un nouveau site web.
J'ai mis en place un site avec Prestashop qui permet de créer des site e-commerce et présenter des catalogues de produits.

Mon problème vient du fait que lorsque j'importe des données, les images du catalogue sont importées parfaitement sur mon site lorsque je travaille en localhost mais ça plante 1 fois sur 2 lorsque je bosse sur mon serveur.
(cela concerne pourtant une dizaine d'images seulement)

Pour info le site est hébergé chez OVH en mutualisé, formule Pro avec une base de données Mysql Perso.

Merci pour votre aide !

Arnaud
 
WRInaute passionné
- OVH : regarde tes caractéristiques PHP : timeout, max_execution_time, post_max_size, upload_max_filesize.

sur un site de galerie (zenphoto), j'ai mis dans php.ini
max_execution_time = 50000
post_max_size = 500M
upload_max_filesize = 500M
max_execution_time = 5000

- Prestashop : cherche des paramétrages similaires.

tu peux détailler les erreurs, et éventuellement (et c'est même mieux) le contenu des fichiers log d'erreur (dans prestashop, tu as un onglet "journaux).
 
WRInaute discret
Merci pour ta réponse.

Voici les données pour mon serveur:
max_execution_time = 30
post_max_size = 64M
upload_max_filesize = 64M

En revanche je n'ai pas trouvé d'onglet sur Prestashop (V1.3.7)

Dans le forum d'ovh un discussion d'il y a 2 ans précise que même en respectant le max execution time ça peut bloquer si trop de ressources sont sollicitées (dans le cas de l'import Prestashop il y a une fonction Image Resize je crois)

Donc je ne sais pas si le problème vient du fait que je suis sur un serveur mutualisé et donc j'aurais forcément des soucis même pour importer 20 produits.
 
WRInaute discret
Apparemment il s'agit de la fonction image resize qui est très mal gérée par Prestashop.

Du coup OVH ne supporte pas même l'import de 10 produits.

Je ne sais pas comment contourner un tel problème
 
WRInaute passionné
je ne sais pas. Il va falloir creuser sur le forum de prestashop, là, je vois pas.
il y a peut être un paramètre pour limiter la fonction d'import.
 
WRInaute impliqué
C'est tout de même bizarre que l'import de photos plante comme ça pour un import de quelques photos.

Les photos que tu importes dans prestashop font bien moins de 2M ? Car l'import est limité en taille à 2M par photo.

J'ai plusieurs boutiques sur des serveurs mutualisés et jamais eu ce problème. Pas OVH, 1&1 mais bon ça ne peut qu'être aussi bien...
 
WRInaute discret
Un technicien ovh a expliqué il y a 2 ans que leur système bloquait automatiquement certaines requête trop gourmandes en ressources, sans tenir compte de la taille de l'image.

Tu es chez quel hébergement mutualisé ?
Combien d'import de produits fais tu en 1 fois ?
 
WRInaute impliqué
1&1

Tu parles de quoi, d'imports produit en csv ou d'import d'images via la catalogue produit ?

Il me semble tout de même pas que l'import d'une image même avec la fonction resize soit si gourmand que cela en ressources ?
 
WRInaute discret
le technicien parle de limitation en générale, ni de catalogue ni d'image en particulier

Voici sa citation:
"c'est bien possible de changer "max_execution_time" avec ini set, mais
si votre script consomme trop de cpu ou RAM, il sera killer."

Source:
http://forum.ovh.com/showthread.php?t=42533

Je n'ai pas plus d'info malheureusement.
 
WRInaute impliqué
Oui mais là je pense que le post est lié spécifiquement à l'import de catalogue en csv où j'ai déjà eu ce problème. Si le catalogue est trop important, il renvoie un erreur 500, ça me l'a déjà fait.

Mais ça peut se comprendre si le fichier à importer est trop volumineux le temps d'exécution sera trop long. Solution: séparer le fichier en plusieurs.

Par contre, importer UNE image, cela ne doit pas générer d'erreur à mon sens.

Et tu as essayé de changer max_execution_time ?
 
WRInaute discret
En mutualisé, impossible de changer les parametres du serveur.
Mon problème n'est pas l'erreur 500 mais les images ne sont pas importées mais avec moins de 10 imports.
 
WRInaute passionné
Malheureusement pour ce genre de service c'est très vite conseillé d'être sur dédié.
Ton script est gourmand : il ouvre des connexions vers l'extérieur, regarde les images etc... Ca tu ne peux pas y couper, et c'est donc normal qu'OVH te coupe/bride pour que tu n'impactes pas les autres clients ;)
 
WRInaute discret
Donc tu penses que le seul moyen de vraiment régler mon problème c'est de passer sur un dédié ?

Le problème du dédié c'est d'avoir la compétence pour administrer un serveur et je ne l'ai jamais fait.

- y a-t-il un autre moyen que le dédié (rester sur mutu) ?
- y a-t-il un moyen d'utiliser un dédié sans passer par une infogérance couteuse ?

Merci
 
WRInaute passionné
il y a surement des applications de transfert ou d'import qui auront été développés pour Prestashop (sous Windows)
à mon avis, cela doit existeer.
 
Nouveau WRInaute
Je suis intéressé aussi pour le même type d'utilisation : un module Prestashop qui importe mes images, les redimensionne... et quand il y en a 200, forcement... c'est long.

Peut être avec un VPS chez OVH ? Ou un autre hébergeur ?
 
WRInaute discret
Il existe effectivement un module "Store Commander" dédié à Prestashop.
Il coûte 500 € pour la version import illimité.

C'est tout de même frustrant de recourir à un tel module alors que le problème vient d'un "bug d'ergonomie" de Prestashop qui aura du prévoir en Natif une fonction pour contourner le problème d'import qui concerne tous les hébergements mutualisés.

J'ai déjà lu dans un forum qu'il y avait possibilité de développer un hack pour permettre l'import avec des pauses (au lieu de tout charger d'un coup).
Quelqu'un parle d'un système fonctionnant en ajax qui lance automatiquement les autres produits quand celui en cours est terminé.
 
WRInaute passionné
arnoweb a dit:
Donc tu penses que le seul moyen de vraiment régler mon problème c'est de passer sur un dédié ?

Le problème du dédié c'est d'avoir la compétence pour administrer un serveur et je ne l'ai jamais fait.

- y a-t-il un autre moyen que le dédié (rester sur mutu) ?
- y a-t-il un moyen d'utiliser un dédié sans passer par une infogérance couteuse ?

Merci
Tu boucles en faisant en bas :
header('Location : page?id(' . $id + 1));

et ça devrait le faire, mais ça demande du codage donc du temps donc couteux ;)

Il faut comprendre ceux qui louent du mutu: tu coutes très cher quand tu fais ça car tu "casses" les autres clients, donc leur QoS (Qualité de service).

Bref, rien n'est impossible si c'est bien codé, mais de la retouche d'image coutera toujours "cher" en ressources.
Tu peux aussi faire un "fake" import : tu importes tout et tu fais croire au script que tout est bon niveau redimensionnement.
Après tu redimensionnes tout proprement chez toi (si les "non miniatures" ont bien été importés) et zou.
 
WRInaute discret
Julia41 a dit:
arnoweb a dit:
Donc tu penses que le seul moyen de vraiment régler mon problème c'est de passer sur un dédié ?

Le problème du dédié c'est d'avoir la compétence pour administrer un serveur et je ne l'ai jamais fait.

- y a-t-il un autre moyen que le dédié (rester sur mutu) ?
- y a-t-il un moyen d'utiliser un dédié sans passer par une infogérance couteuse ?

Merci
Tu boucles en faisant en bas :
header('Location : page?id(' . $id + 1));

et ça devrait le faire, mais ça demande du codage donc du temps donc couteux ;)

Il faut comprendre ceux qui louent du mutu: tu coutes très cher quand tu fais ça car tu "casses" les autres clients, donc leur QoS (Qualité de service).

Bref, rien n'est impossible si c'est bien codé, mais de la retouche d'image coutera toujours "cher" en ressources.
Tu peux aussi faire un "fake" import : tu importes tout et tu fais croire au script que tout est bon niveau redimensionnement.
Après tu redimensionnes tout proprement chez toi (si les "non miniatures" ont bien été importés) et zou.

Merci.

Je vais voir ce qui peut être le plus réalisable.
 
Nouveau WRInaute
J'ai le même souci que toi en essayant depuis quelques jours de passer mon premier import de nouveautés sur prestashop. Auparavant mon site était sur le serveur test de l'agence qui a monté le site donc je n'avais eu aucun problème.Et je me prends donc l'erreur 500 sur OVH.
Voici la réponse de OVH à ma question sur l'incompatibilité d'OVH pro avec les uploads de Prestashop qui redimensionnent les photos :

De nombreux clients utilisent prestashop sur nos serveurs, nous n'avons pas de retour négatifs à ce niveau, l'offre pro ou perso est donc adaptée et la limitation est necessaire sur une offre mutualisée.
Si vous souhaitez definir vous même le max_execution_time cela sera possible sur nos offres de serveurs dediés.

Ce qui est aberrant puisque le temps d'exécution est forcément en minutes si on charge un .csv de ne serait-ce que 20 produits avec 3 photos sur chaque ligne.

Il reste peut être la solution payante Store-Commander...toujours moins lourde qu'un serveur dédié...
Ou y passer des jours et des nuits pour uploader directement depuis le back-office. Perso, je renonce...
 
WRInaute discret
En localhost il faut environ 0,4 secondes pour importer un produit avec 1 photos
soit environ 5 min 20 pour 800 produits (j'ai fait le test)
Avec la limite de 30 secondes d'ovh ça fait 60 produits donc largement insuffisant c'est clair.

Mais apparemment OVH est encore plus restrictif car il n'aime pas la fonction Image Resize et même avec un import de 10 images la fonction php est bloquée 1 fois sur 2.

Donc en mutualisé je ne vois aucune solution pour automatiser.
Seul l'import en localhost puis mise à jour de la base de données est possible selon moi.

Store commander permet de régler ce pb en mutualisé tu penses ?
Store commander a-t-il une fonction qui est capable de trier automatiquement dans un catalogue des chemises, pantalons, cravates, ... afin de les classer automatiquement dans les catégories appropriées à notre site ?
 
WRInaute impliqué
arnoweb a dit:
Seul l'import en localhost puis mise à jour de la base de données est possible selon moi.

Ca le semble le mieux effectivement.

Store commander permet de régler ce pb en mutualisé tu penses ?

Je ne connais store commander que de nom mais je doute qu'il solutionne ce problème
 
WRInaute discret
Voici la réponse de Store Commander pour chacune de mes questions:

>- A partir d'une url sur un site partenaire, il faut télécharger les différents catalogues csv ou xml pour les télécharger et importer directement dans ma boutique

Store Commander possède un outil d'import CSV pour créer/modifier vos produits.
Un outil permettant de récupérer des fichiers extérieurs et de les importer automatiquement est en cours de développement, il sera disponible d'ici la fin du mois.

>- Il faut une fonction qui permet de classer automatiquement les produits du catalogue partenaire aux catégories de ma boutique (soit en détectant des mots-clé, ou bien autrement)

SC permet de placer les produits dans les catégories indiquées dans le CSV.
S'il est nécessaire de créer un "mapping" entre les catégories du partenaire et les catégories de votre boutique, c'est possible mais cela nécessite une intervetion supplémentaire de notre part pour rendre ce transfert automatique.

>- Il faut que ça règle le problème que je rencontre avec mon serveur mutualisé qui limite le nombre d'import.

SC dispose d'un outil de relance automatique de l'import qui permet de pallier à cette contrainte : vous pouvez importer X lignes du fichier toutes les Y secondes.

N'hésitez pas à revenir vers moi si vous avez d'autres questions.
 
Nouveau WRInaute
Pour info, voici la réponse d'OVH à propos des VPS : http://www.ovh.com/fr/vps/

"Oui sur une offre VPS vous pouvez gérer totalement les modules Apache et PHP, ce qui fait que vous pouvez modifier le max_execution_time ainsi que tout les paramètres PHP.
Si vous n'avez pas de connaissances en administration serveur, vous pouvez vous orienter vers des ditributions ou les interfaces d'administration sont simplifiés, par exemple avec Plesk ou la release 2 d'Ovh.
Les VPS sont, dans ces distributions, délivrés sécurisés pour un hébergement PHP/Mysql.

Dans ces cas il n'est pas nécessaire d'avoir des connaissance en administration serveur."

arnoweb a dit:
Donc tu penses que le seul moyen de vraiment régler mon problème c'est de passer sur un dédié ?

Le problème du dédié c'est d'avoir la compétence pour administrer un serveur et je ne l'ai jamais fait.

- y a-t-il un autre moyen que le dédié (rester sur mutu) ?
- y a-t-il un moyen d'utiliser un dédié sans passer par une infogérance couteuse ?

Merci
 
WRInaute discret
Très intéressant, je ne savais pas qu'il existait un moyen d'utiliser un dédié sans connaissance.

En revanche, j'aurais bien voulu pourvoir tester mon script sur le dédié avant d'acheter cette formule.
 
Discussions similaires
Haut