[SOLVED] Problème de création de nombreux répertoires

Petit nouveau ! | 2 Messages

22 sept. 2011, 16:03

Bonjour à tous,

j'ai écrit du code qui crée des arborescences de fichiers. Il crée un répertoire contenant une quinzaine de répertoires.
J'appelle cela une branche.
Et il doit répéter le tout environ 1600 fois. Soit 1600 branches (les unes à côté des autres, ce n'est pas récursif).

Ce code utilise donc massivement des appels aux fonctions
file_exists
isdir
mkdir($subfolder, 0777, true)

Malheureusement, après la création d'environ 30 branches : plantage : Internal Server Error.

Et je n'ai encore créé aucun fichier.

J'utilise Apache 2.2.11 / PHP 5.2.6 / Windows 7
Apparemment, le nom des répertoires n'a pas d'influence,
la vitesse d'exécution non plus (j'ai essayé de ralentir le process par des usleep).

Pourriez-vous m'aider ?

Merci,
Alain
Modifié en dernier par abcbienmoi le 22 sept. 2011, 16:57, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

22 sept. 2011, 16:30

Quelle est l'erreur renvoyée ?

Cela ne sert à rien de ralentir ton script dans ce cas sauf à causer des problèmes.

Je comprends pas trop l'utilité de file_exists si tu crée des dossiers et cette fonction prend beaucoup de ressources...

En dernier recours si c'est un problème de dépassement de la durée du temps d'exécution maximum autorisée pour tes script, il faudra soit augmenter cette durée soit fragmenter la création de tes dossiers.

Et puis je sais pas quelle est la logique de ton application mais habituellement on crée plutôt des dossiers à la volée, suivant les besoins.

Petit nouveau ! | 2 Messages

22 sept. 2011, 16:57

Bien vu, je n'avais pas remarqué dans un log du serveur apache:
PHP Fatal error: Maximum execution time of 30 seconds exceeded

J'ai augmenté ce paramètre dans le fichier ini. C'était la cause du problème.

Merci,
Alain

Mammouth du PHP | 568 Messages

22 sept. 2011, 16:59

Bien vu, je n'avais pas remarqué dans un log du serveur apache:
PHP Fatal error: Maximum execution time of 30 seconds exceeded

J'ai augmenté ce paramètre dans le fichier ini. C'était la cause du problème.

Merci,
Alain
Sinon tu peux aussi ne pas mettre de temps d'exécution pour ton script:

http://php.net/manual/fr/function.set-time-limit.php