Jump to content

Import CSV ou comment devenir fou en 10 jours !


Recommended Posts

Bonjour,

 

Alors avant tout, voici les infos :

 

Hébergement : O2 switch formule unique.

 

Version de PrestaShop 1.6.1.1

 

Serveur : Informations sur votre serveur page prestashop (paramères avancés/informations)

Informations sur votre serveur Linux #1 SMP Fri Jun 12 15:09:02 EDT 2015 x86_64

Version du logiciel serveur Apache

Version de PHP 5.5.38

Limite de mémoire 4G <--- oui vous lisez bien, poussé à 4G pour test ;)

Temps d'exécution maximal (max_execution_time) 3000

Version de MySQL 5.5.51-38.1

Préfixe des tables ps_

Moteur MySQL InnoDB

 

option PHP

allow_url_fopen

On display_errors Off error_reporting E_ALL & ~E_NOTICE file_uploads On include_path .:/usr/lib/php:/usr/local/lib/php log_errors On mail.force_extra_parameters no value max_execution_time 3000 max_input_time -1 memory_limit 4G open_basedir no value post_max_size 512M session.save_path /tmp short_open_tag On upload_max_filesize 512M

 

fichier CSV fabricant, 120 lignes dont toutes les lignes de données s'importent

mais selon les essais il importe les 10 ou 15 premières images, 20 avec de la chance

lors du second essai je démarre mon csv à la ligne 20 et les 20 images suivantes sont importées

réponses et solutions précédemment apportées

 

- un problème de fichier CSV mal rédigé
   testé et fonctionnel s'importe dans sa totalité "images comprises"

   mais 10 lignes par 10 lignes donc le CSV doit être OK

- un problème de droit d'accès aux répertoires

  idem les images se chargent et le CSV fonctionne 10 lignes par 10 lignes donc OK

- le max_execution_time et le max_input_time testé en long et en large
  modifié et augmenté sans modification notoire sur l'import
  j'ai même mis le max_input_time=-1 sans influence donc OK

  Le rapport de prestashop arrive après 10 ou 15 secondes selon les essais

  (avec les avertissements, bien sûr)

- Un problème de taille d'image, j'ai réduit le format en 150X150 et elle font entre 1.3 Ko et 8 Ko pour un total de 458K

   pour l'ensemble des images donc OK (si vous arrivez à faire plus petit !!!)

   avant les images faisait entre 50 et 100Ko mais aucune différence au niveau de l'import

   avec la réduction de taille pourtant significative. ?????.

- un problème de boucle php dans .htaccess,
   après suppression du .htaccess,  prestashop en crée automatiquement un nouveau dans la page
   paramètre SEO/URL (quoi qu'il peux recréer la boucle automatiquement également ???)
   désolé mais je manque de connaissance de ce côté !!!

- un kill des fonctions de redimensionnement d'image
   trop gourmand en ressource processeur le serveur stop la commande.

   Impossible à vérifier

Voila c'est tout ce que le forum prestashop a put me fournir.

j'ai bien une personne qui a expliqué qu'il a demandé à son prestataire de le changer de cluster et que cela a résolu ses problèmes mais n'y connaissant rien de ce côté je n'ai pas approfondi la question.

 

quelqu'un a-t'il une piste, je suis juste à la limite de tout laisser tomber (c'est ma femme qui sera heureuse)

et recommencer à 0 ne m'intéresse pas.
 

Link to comment
Share on other sites

que voulez vous dire par désactivez tous vos formats d'images ?

si j'ai bien compris je vais dans prestashop/préférence/images et je décoche tous dans la colonne fabricants?

 

j'ai également vidé le dossier public/html/img/m

si c'était ça, les images sont quand même importées dans ce dossier lors de l'import

enfin 20 d'entre elles seulement !!!

Link to comment
Share on other sites

Pardon j'avais pas précisé cela non plus, ignoré la régénération des miniatures

j'ai bien entendu déjà testé cela également, mais rien n'y fait.

 

Avec cette option sur oui ou sur non les images sont copiées du répertoire www.monsite/source

et placée dans le répertoire public_html/img/m avec comme nom, l'ID du fabricant.

 

En ignorant la régénération des miniatures les images sont copiés de toutes façon dans le répertoire public_html/img/m,

Il n'arrive simplement pas à copier en totalité. Je précise également que celle qu'il arrive à transférer disposent

d'un droit d'acces 664 et que j'ai mis le répertoire en 755 au cas ou !!!

je suppose que les images fabricant du BO ne sont pas traitées comme une miniature à régénérer ??

Enfin j'en sais rien, avec ou sans l'option active, il fait la même chose.

 

A savoir que lorsque l'image est présente dans ce répertoire, il recrée la miniature

sous le nom suivant dans www.monsite/img/tmp/manufacturer_mini_1_1.jpg

pour l'afficher sous cette forme dans le BO www.monsite/img/tmp/manufacturer_mini_1_1.jpg?time=1475589372

 

Si j'efface les images dans le tmp et dans public_html/img/m et les replace par d'autres de taille immense,200 Ko chacune

Il les transforme automatiquement au format 33X45 ou 76X45 en fonction de l'orientation de celle-ci.

Déjà la je vois que le format n'est pas présent dans les préférences/image colonne du fabricant (d’ailleurs entièrement décoché pour l'occasion) 

 

Les images fabricants sont donc régénéré à la volé à partir du moment ou l'on arrive sur la page catalogue/fabricants

Mais mon problème reste le même pourquoi ne les copient il pas toutes en même temps de mon répertoire www.monsite/source

vers le répertoire public_html/img/m lors de l'import ??????

 

Enfin on avance un peu, cela n'a pas l'air d'être un problème de régénération.

les 30 super méga images (entre 300 et 1.3Mo) que j'ai mis dans le répertoire sont régénéré le temps d'un

clignement d’œil.

Link to comment
Share on other sites

Si tu ne coche pas génération, oui ça copie l'image originale et c'est tout, les miniatures si elle doivent être faites sont ignorées

 

ben en fait c'est la copie de l'image originale qui pose problème, 10 à 15 max sont copié

 

Les miniatures des fabricants ne sont générée que lorsque je vais dans la page catalogue/fabricant de mon BO

Et cela à la vitesse de la lumière même avec des images de 1Mo chacune.

 

Je viens de donner les droit super admin à mon hébergeur, en lui expliquant ce qui ne fonctionne pas

J'attends sa réponse. j'espère qu'il en aura une bonne,

je pense que j'ai fouillé de la cave au grenier dans la maison de l'import prestashop.

Link to comment
Share on other sites

Désolé mais je ne traite pas avec lui,

non je rigole, ils sont sympas, que ce soit alexandre, alexis ou romain,

toujours très agréable, mais je préfère que tous marches et ne pas avoir besoin d'eux ;)

Ça leur laisse du temps pour autre chose et à moi également.

j'en profite pour recommander leurs services d'hébergement ---> www.o2switch.fr <---

Link to comment
Share on other sites

putain t'est un dieu bordel, pardon résumons, joie,joie,joie

 

en mettant la même image (la première) sur les 50 première ligne, il m'importe à chaque fois les 50 premières images

Reste maintenant a voir pourquoi certaines image jpg fonctionne une fois et pas l'autre ?

ou il y aurait une histoire de buffer qui pourrait charger un certain nombre d'image source ?

Edited by Phoenix ashes (see edit history)
Link to comment
Share on other sites

Oui doekia est un Dieu que nous vénérons chaque jour :)

 

Blague à part, il faut ouvrir chaque image avec un éditeur d'image digne de ce nom et vérifier dans les propriétés de l'image que le type correspond bien à l'extension et DANS TOUS LES CAS, l'enregistrer sous le bon format depuis l'éditeur.

En effet, l'éditeur corrigera et adaptera le code de l'image au format demandé (Ce que GD n'arrive pas à faire) et vous aurez des jpg/png propres et prêts à être importés.

Link to comment
Share on other sites

Ok je reviens avec les même problème ou presque,

Voici ce que déduit mon hébergeur,

 

Ce qui se passe : à la fin de l'import, le script semblent vouloir vérifier que l'image existe en essayant de la télécharger ou en récupérer les headers retournées par le serveur. Dans la "trace" du processus en cours d'exécution cela correspond à cette partie :

 

[pid 150851] connect(7, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("xxx.xxx.xxx.xx")}, 16) = -1 EINPROGRESS (Operation now in progress)
[pid 150851] poll([{fd=7, events=POLLIN|POLLOUT|POLLERR|POLLHUP}], 1, 5000) = 1 ([{fd=7, revents=POLLOUT}])
[pid 150851] getsockopt(7, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
[pid 150851] fcntl(7, F_SETFL, O_RDWR) = 0
[pid 150851] sendto(7, "GET /prestashop/logo/Dibe.jpg HTTP/1.0rn", 40, MSG_DONTWAIT, NULL, 0) = 40
[pid 150851] sendto(7, "Host: www.xxxxxx.xxx", 22, MSG_DONTWAIT, NULL, 0) = 22
[pid 150851] sendto(7, "rn", 2, MSG_DONTWAIT, NULL, 0) = 2

 

Le serveur ne répond pas à cette requête car la requête ne contient pas de userAgent et est similaire à ce que peuvent faire des robots malveillant ou des pirates sur internet :

www.xxxxxx.xxx- - xxx.xxx.xxx.xx- - [05/Oct/2016:10:07:30 +0200] "GET /prestashop/logo/Dibe.jpg HTTP/1.0" 444 0 64 0 0.000 80 "-" "-"

 

A savoir que cette image passe selon la ligne ou l'on démarre.

Ca va être un peu long mais je résume ce que j'ai fait comme test :

Test X5 cinq fois le même nom d'image sur 5 lignes différentes
ligne 1 image 1
ligne 2 image 1
ligne 3 image 1
ligne 4 image 1
ligne 5 image 1
ligne 6 image 6
ligne 7 image 6 etc jusqu'a 120
ce test est passé avec succès tout est importé 120 images présentes
Mais je n'importe en réel que 120/5= 24 images identiques (c'est un peu mieux)

Test X4 quatre fois le même nom d'image sur 4 lignes différentes
ligne 1 image 1
ligne 2 image 1
ligne 3 image 1
ligne 4 image 1
ligne 5 image 5
ligne 6 image 5
ligne 7 image 5
ligne 8 image 5
ligne 9 image 5 etc jusqu'a 120
ce test est passé avec succès tout est importé 120 images présentes
Mais je n'importe en réel que 120/4= 30 images identiques (quand même)

Test X3 trois fois le même nom d'image sur 3 lignes différentes
ligne 1 image 1
ligne 2 image 1
ligne 3 image 1
ligne 4 image 4
ligne 5 image 4
ligne 6 image 4
ligne 7 image 7 etc

ce test plante, pour être sûr que ce n'est pas une image qui fait planter j'ai fait le même test en décalant d'une ligne
Test X3 +1
ligne 1 image 1
ligne 2 image 2
ligne 3 image 2
ligne 4 image 2
ligne 5 image 5
ligne 6 image 5
ligne 7 image 5 etc
ce test plante, ensuite j'ai décalé de 2 pour plus de sûreté

Test X3 +2 comme cela aucune image n'est identique au fichier test X3
ligne 1 image 1
ligne 2 image 2
ligne 3 image 3
ligne 4 image 4
ligne 5 image 4
ligne 6 image 4
ligne 7 image 7 etc
Ce test plante également
j'ai également testé 1 sur2 puis une sur 3

Link to comment
Share on other sites

Moi je ne pense rien, c'est mon prestataire qui cherche, moi je vois juste que quand je fait F5 sur la page d'import le résultat varie à chaque fois avec un nombre d'image à peu près équivalent, donc je suppose que si c'était un problème de user agent, le problème serait la dès la première image. Maintenant les mystères de php, je suis pas du tout dedans sinon t'as vus avec le test x 5 ou je recopie les url des images sur 5 lignes différentes puis 4 sur 4 lignes différentes, elles s'importent correctement. c'est comme si il lui fallait un temps pour voir si l'image est bien là, et comme il doit faire 5 ligne d'import ou 4 on dirait que cela lui suffit, à partir du moment ou je passe à 3 images, bing c'est fini et le dossier ou prestashop recopie mets les images ne comporte que les premières images.

Je vois un truc du genre

 

PS copie l'image dans /public_html/img/m en la renommant 1

puis PS la recharge pour voir si elle est la, ok

 

ensuite il fait pareil avec la 2 eme ligne

PS copie l'image dans /public_html/img/m en la renommant 2

puis PS la recharge pour voir si elle est la, ok

 

mais arrivé à la 12 ou 13eme ligne,

PS copie l'image dans /public_html/img/m en la renommant 13

et essaye de la charger alors qu'elle n'est pas encore présente

 

du coup si les images sont identiques sur plusieurs lignes PS n'a pas besoin de la créer, il n'a donc plus qu'a faire le test pour voire si elle est présente et comme elle porte le même nom, elle l'est forcément, il passe à la ligne suivante. D'ou peut être un laps de temps nécessaire pour écrire l'image suivante et ne pas se retrouver avec un info qui lui dit STOP je ne l'ai pas celle la.

 

mon problème c'est un peu comme chez le banquier quand tu vas retirer de l'argent d'un chèque déposé la veille ;)

tu l'as plus dans les mains, ils ont déjà les sioux, mais sur ton compte en banque il ne figure pas encore.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...