Page 1 sur 1

Update sql php en masse (boucle) s'arrête en erreur 500 en serveur local

Posté : 16 janv. 2016, 10:31
par djatomix1
Bonjour à tous, je suis un peu perdu, j'ai un prestashop qui tourne sur un serveur phpnet dédié virtuel
Kernel Linux 2.6.32-openvz-042stab106.4-amd64 sur x86_64
Informations CPU Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz, 3 cœurs
3 Go de Ram
webmin/virtualmin de base

j'ai un script journalier qui efface les quantités dans ma table des produits, qui reprend la liste de mon stock réel et qui modifie chaque article pour mettre à jour le stock. 10000 articles

foreach listedestock {
update product set stock=$x where id=$y;
}

ça fonctionne sur le serveur dédié externe en 141sec
ça fonctionne sur mon pc en local avec xamp ou mamp en 30sec

j'ai monté un serveur local pour faire un miroir
linux amd64 ou i386 ou ubuntu (je les ai tous essayé)
webmin/virtualmin
Intel(R) Xeon(R) CPU E5506 @ 2.13GHz, 8 cores
20 Go de ram - limites poussées au maximum dans php.ini...

je lance la moulinette, ça met super longtemps et ça met erreur 500
j'ai tout essayé je crois, copier les fichiers php.ini et conf.ini
ça ne marche pas. Je suis complètement bloqué car je voulais automatiser sur le miroir et moins toucher au serveur du site.

merci

Re: Update sql php en masse (boucle) s'arrête en erreur 500 en serveur local

Posté : 16 janv. 2016, 17:20
par Patriboom
Bonjour djatomix1,

Juste une vérification: est-ce bien SQL ou est-ce MySQL ?

Je ne crois pas que ce fût une bonne idée de reproduire les fichiers ini.
Concernant ton problème précis, je regarderais plus du côté des modules complémentaires.
Par exemple, il était courant que Xamp ou d'autres installe automatiquement magic_quote
Du côté des distributions Linux, les gens ont plus tendances à mettre côté de tels modules qui sont non-sécuritaires ou abandonnés par l'équipe de gestionnaire. Chez Linux, l'abandon par la branche mère est plus hâtive, mais les modules restent disponibles longtemps. C'est pourquoi, si un programmeur PHP veut garder un de ces vieux modules, il doit l'installer lui-même.

Deuxièmement, il me semble claire que ton programme vire en boucle. Le clef qui te permettra de déboguer en local sera simplement de te mettre un petit compteur qui forcera une limite à boucle. En même temps, tu produis un affichage du contenu. Ainsi, tu trouveras facilement la variable qui ne change pas et qui garde ta boucle fermée sur elle-même.

Finalement, en local, tu peux te permettre d'afficher TOUS les messages d'erreur, ça accélère le débogage

Code : Tout sélectionner

<?php error_reporting(E_ALL); ?>