1 votes

Pourquoi un script lent provoque-t-il l'arrêt de tout mon site ?

J'ai un PHP script qui utilise cURL pour charger un fichier depuis un autre serveur.

Le fichier est d'environ 24MB. Je comprends pourquoi le script lui-même chargeant le fichier prendrait un peu de temps pour s'exécuter, cependant toute demande au site pendant que le script s'exécute sera interrompue jusqu'à ce que le script se termine.

Cela ne s'est pas produit sur notre ancien serveur partagé avec le même script. Le nouveau serveur est un serveur en nuage. Je l'ai porté à 10 nœuds (cpu dédié 6Ghz, 3760MB ram, 2500GB de bande passante) et cela n'a eu aucun effet sur ce problème.

Cela ne me dérange pas que le script lui-même prenne beaucoup de temps à s'exécuter puisqu'il s'agira d'une tâche automatisée pour un flux de données. Je ne peux pas avoir tout le site qui se bloque pendant son exécution cependant.

Avez-vous une idée de la raison pour laquelle cela pourrait se produire ?


Mise à jour il semble que cela ne se produise que localement. Si j'essaie de charger le site sur un ordinateur distinct alors que le script est en cours d'exécution, il fonctionne comme prévu.

0voto

dotancohen Points 2350

Vous pouvez peut-être utiliser "ignore_user_abort(true)" et ensuite utiliser une redirection HTTP sur la page vers une autre page.

PHP 5 dispose également d'un bon système de threads, ce qui peut aussi aider.

0voto

Janne Pikkarainen Points 31244

Maintenant, la question clé est : que fait votre script en plus de récupérer ce fichier ? Le traiter et insérer les données dans la base de données ? Peut-être que dans votre ancien environnement vous aviez MySQL utilisant des tables InnoDB et dans votre nouvel environnement MySQL avec des tables MyISAM.

MyISAM nécessite un verrouillage complet de la table pendant les opérations d'écriture au lieu des verrous au niveau des rangées que possède InnoDB, ce qui peut provoquer un blocage de votre site si votre site réel utilise les mêmes tables que le script curl script.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X