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 :
Comme le fichier ZIP résultant doit faire à peu près 400 Mo, l'instruction de la ligne 9 prend du temps.
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');
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $timeout = 5000 ; ini_set('max_execution_time', $timeout);
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.
Partager