IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Eviter un time out


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut Eviter un time out
    Bonjour,
    J'ai créé un script qui réalise un fichier ZIP de tous mes fichiers sur le serveur FTP de mon site et le stocke dans un répertoire de ce même serveur.
    Le code approximatif est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class HZip
    {
    ...
    } 
     
    $backupdir = dirname(__FILE__);
    chdir($backupdir);
    HZip::zipDir('/home/u654156753', '/home/u654156753/export/monfichier.zip');
    Comme le fichier ZIP résultant doit faire à peu près 400 Mo, l'instruction de la ligne 9 prend du temps.
    Or je suis chez un hébergeur gratuit.
    J'ai identifié que la durée max d'exécution est de 30s. Au-delà, je génère une erreur serveur de type 500.
    J'ai compris qu'il s'agit d'un pb de time out.
    Je n'ai pas accès au fichier php.ini et ne peut donc pas le modifier.
    Le set_time_limit est désactivé
    J'ai essayé de rajouter ceci en tête de script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $timeout = 5000 ;
    ini_set('max_execution_time', $timeout);
    Cela ne provoque pas d'erreur (ce qui m'a laissé espérer un moment que cette instruction n'était pas désactivée par mon hébergeur), mais cela ne change rien.

    PAr ailleurs, quand j'utilise sur mon blog wordpress une extension qui a pour finalité, précisément la réalisation d'un fichier ZIP de tous les fichiers de mon blog, l'extension marche parfaitement sans time out et la progress bar de l'extension montre bien que le script mais aussi plus de 30s pour finaliser sa tâche.

    fonctionnellement, c'est donc possible, avec les moyens mis à disposition par mon hébergeur et malgré ses limitations, de créer un fichier ZIP lourd.
    Je me pose donc la question : Qu'est-ce qui diffère dans le fonctionnement des 2 scripts à votre avis (le mien que je connais, et celui de l'extension dont j'ignore le fonctionnement) pour expliquer que l'un est vu comme un script qui dure plus de 30s et doit être interrompu, et pas l'autre.

    Je ne suis pas un expert en PHP, juste un "grand débutant". Il m'est donc difficile d'ouvrir le capot de l'extension pour trouver par moi-même comment elle fonctionne et ainsi trouver la réponse à ma question.

    Ma question est de portée assez générale et sa réponse pourrait m'aider à résoudre tous les pb de time out que je rencontre lorsque je fais exécuter un script un peu long.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as essayé set_time_limit() ?

  3. #3
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Oui, comme je le disais, cette instruction est désactivée aussi chez mon hébergeur

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    S'il y a une barre de progression, il s'agit peut être d'appels succesifs en Ajax : les fichiers seraient ajoutés par lots au zip.
    Tu devrais regarder le script pour voir ce qu'il fait.

  5. #5
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    J'ai essayé mais j'ai du mal à voir quel fichier PHP fait quoi dans cette extension, faute de connaissances suffisantes. Il y a pas mal de fichiers PHP, 3 fichier JS.
    Il s'agit de l'extension Xcloner (mais j'en ai essayé plusieurs qui se comportent de la même manière ou presque)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce qui est dit sur leur site semble confirmer mon hypothèse :
    From our tests, the new AJAX Generate backup system is much faster than the similar normal incremental mode, and it will also help with directory scanning timeouts on large filesystems.

  7. #7
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    D'accord, mais est-ce compliqué à mettre en oeuvre ?

Discussions similaires

  1. [Session]maîtriser le time out de la session
    Par croquedur dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 23/10/2007, 11h57
  2. [10g] ORA-01013 Time out
    Par rv78 dans le forum Oracle
    Réponses: 22
    Dernier message: 11/01/2006, 12h58
  3. MSXML2.serverXMLHTTP : The operation timed out
    Par malbaladejo dans le forum ASP
    Réponses: 1
    Dernier message: 06/12/2005, 09h50
  4. Problème de time-out avec un socket client.
    Par Depteam1 dans le forum MFC
    Réponses: 3
    Dernier message: 17/10/2005, 11h30
  5. error time out expired
    Par the_new dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2005, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo