logo Homepage
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [Résolu] requete SQL qui entrainne erreur 500  (Lu 31160 fois)
#Z@tox#

Profil challenge

Classement : 277/54693

Membre Complet
***
Hors ligne Hors ligne
Messages: 177


Voir le profil WWW
« le: 11 Octobre 2018 à 10:52:46 »

Hello les amis,

j'ai un problème sur un projet je détaille ci-dessous:

J'ai une base de données accessible via une interface utilisateurs sur mon site web

Cette base comporte énormément (plusieurs dizaines de milliers) d'informations sur les clients :

nom, prénom, numéros de factures, montant des factures,  adresses ...

Ces données se chargent parfaitement à l'écran lorsque je me log sur mon interface utilisateur.

J'ai créé une option pour exporter les données qui s'affichent à l'écran dans un tableau .xls

Je ne rencontrait pas de problèmes particuliers jusqu'au jour ou... la base est devenue trop grosse, et lorsque je souhaite exporter les données dans le tableau excel, l’exécution de la requete devient trop longue et le serveur renvoie une erreur 500.

Comment puis-je augmenter la durée maximale de réponse tolérée par le serveur? Pour info la base est hébergée chez 1and1 j'ai cherché dans les options du compte client 1and1 mais j'ai pas trouvé.

faut il chercher un truc du style
Code:
CommandTimeout = XXXXX;

Merci par avance pour votre aide.

« Dernière édition: 12 Octobre 2018 à 10:01:38 par #Z@tox# » Journalisée

^ ^_ _ < >< > B A
the lsd
Administrateur

Profil challenge

Classement : 181/54693

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3096

poulping for fun & profit


Voir le profil WWW
« #1 le: 11 Octobre 2018 à 11:34:01 »

Erreur 500 ? timeout ? Are U sure ?

Si c'est un vrai timeout, t'as pas de 500, juste un "connection timeout" par le client. Tu es sûr que les données de ta BDD sont correctes et ne font pas foirer un parsing quelconque, ce qui aboutirait à un 500 ?

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
#Z@tox#

Profil challenge

Classement : 277/54693

Membre Complet
***
Hors ligne Hors ligne
Messages: 177


Voir le profil WWW
« #2 le: 11 Octobre 2018 à 11:45:02 »

Hello,

oui, les données sont bonnes puisque je n'avais pas de problème particulier.

j'ai pourtant remarqué qu'au fur et à mesure que la base grossissait, le tableau excel mettait de plus en plus de temps à se générer, ce qui est normal,

jusqu'au jour ou il ne se générait plus du tout, car le serveur coupe la requete.

voici le message qui s'affiche a l'écran :

Citation
Error 500 - Internal server error

Un problème inattendu est survenu.
Veuillez réessayer ultérieurement.
Journalisée

^ ^_ _ < >< > B A
the lsd
Administrateur

Profil challenge

Classement : 181/54693

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3096

poulping for fun & profit


Voir le profil WWW
« #3 le: 11 Octobre 2018 à 11:53:24 »

hmmm, dans ce cas, il faut savoir quel partie de ta requête coupe la connexion :
 - le serveur web ? j'y crois moyen, pour moi il ne réagit pas sur une requête trop longue. Après, je connais pas ton code
 - ton code applicatif ? PHP, autre ? possible.
 - la BDD ? J'y crois moyen aussi, elle n'a pas à interagir directement avec le serv web, elle est normalement agnostique

Pour éliminer les problèmes un par un, fais des tests sur chaque partie. Mais imho, penche toi sur le code applicatif, je pense que ça se situe ici
Malheureusement, si tu veux plus d'aide, il va falloir nous donner plus d'infos  

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
flob
Administrateur

Profil challenge

Classement : 20/54693

Membre Junior
*****
Hors ligne Hors ligne
Messages: 74


Voir le profil WWW
« #4 le: 11 Octobre 2018 à 12:07:36 »

Salut,

Il est possible que ce soit la génération du XLS qui pose problème, les lib existantes sont assez lourdes je trouve.

Tu peux essayer de remplacer l'export XLS par un export CSV en utilisant les fonctions fournies par Php (fopen, fputcsv ...). Tu peux faire un $fd = fopen('php://output', 'w'); fputcsv($fd, ....); pour écrire le CSV directement dans le buffer de sortie et ainsi éviter d'utiliser un fichier temporaire (à combiner avec quelques header qui vont bien évidemment).

Edit : Il aussi possible que tu dépasses la mémoire autorisée, si c'est le cas il faudra donc optimiser la récupération et le traitement des données (c'est comme quand tu veux lire un très gros fichier, si t'ouvres tout le fichier d'un coup c'est mort ^^)
« Dernière édition: 11 Octobre 2018 à 12:11:19 par flob » Journalisée

Newbie Contest Staff :
Flob
Statut :
Administrateur
Citation :
...
Blog :
elrindel.github.io
#Z@tox#

Profil challenge

Classement : 277/54693

Membre Complet
***
Hors ligne Hors ligne
Messages: 177


Voir le profil WWW
« #5 le: 11 Octobre 2018 à 12:52:27 »

Merci à tous les 2 pour vos réponses,

La réponse de Flob me met la puce a l'oreille, je vais commencer par essayer de générer le tableau en .csv et pas en .xls,

cela devrait alléger la génération de celui-ci et optiiser le temps.

Si cela ne change rien au problème, je me pencherai sur la partie PHP pure et dure.

Journalisée

^ ^_ _ < >< > B A
lugdanum
Profil challenge

Classement : 350/54693

Néophyte
*
Hors ligne Hors ligne
Messages: 21


Voir le profil
« #6 le: 11 Octobre 2018 à 18:10:55 »

Hello

Regarde aussi peut être comme tu le penses du côté de max_execution_time :

https://assistance.1and1.fr/hebergement-c65619/programmation-c65626/php-c65653/quels-sont-les-parametres-php-modifiables--a793719.html

https://assistance.1and1.fr/hebergement-c65619/programmation-c65626/php-c65653/limites-des-scripts-php-dans-les-contrats-d-hebergement-1and1-a793736.html

https://help.1and1.com/hosting-c37630/scripts-and-programming-languages-c85099/php-c37728/change-php-directives-a660257.html
Journalisée
#Z@tox#

Profil challenge

Classement : 277/54693

Membre Complet
***
Hors ligne Hors ligne
Messages: 177


Voir le profil WWW
« #7 le: 12 Octobre 2018 à 09:55:13 »

Hello,

@ lugdanum,

le changement de format en .csv n'a rien donné, je vais parcourir tes liens ,

Merci
Journalisée

^ ^_ _ < >< > B A
#Z@tox#

Profil challenge

Classement : 277/54693

Membre Complet
***
Hors ligne Hors ligne
Messages: 177


Voir le profil WWW
« #8 le: 12 Octobre 2018 à 10:01:18 »

Merci Lugdanum,

je viens d'obtenir grace a toi l'info dont j'avais besoin,

sur les serveurs mutualisés de chez 1and1  le MAX_EXECUTION_TIME  est bridé à 60secondes et ce quelque soit l'abonnement choisi.

Seule solution à priori, basculer sur un serveur dédié 25X plus cher que le mutualisé   je vais donc couper ma BDD en plusieurs morceaux et lancer plusieurs requetes inférieures à 60s pour contourner le problème.

Ca va demander un peu de dev, mais au moins mon client n'y verra que du feu...


Merci à tous de vous etre penchés sur la question.
« Dernière édition: 12 Octobre 2018 à 10:05:00 par #Z@tox# » Journalisée

^ ^_ _ < >< > B A
Pages: [1]
  Imprimer  
 
Aller à: