Page 1 sur 1
executer tous les *.php
Posté : 23 août 2005, 13:15
par HD
salut
j'ai besoin d'un script qui execute tous les fichiers php qu'il trouve dans un dossier
c'est possible ? et si oui comment depasser la contrainte de 30secondes (sans utiliser set time limit) car chaque fichier fait pres de 20secondes
merci
Posté : 23 août 2005, 14:26
par ouckileou
ou tu le lances en ligne de commande, via un exec() par exemple
Posté : 23 août 2005, 18:33
par HD
non car ca ne marche pas si l'hebergeur est en safe mode
alors une reponse a ma question svp ?
Posté : 23 août 2005, 18:52
par Cyrano

J'aurais bien une idée, mais c'est lourdingue.
Fais une fonction qui liste les fichiers PHP de ton répertoire: à partir de cette liste, crée un fichier temporaire .php avec autant de lignes d'instructions qu'il y a de fichiers (Mais
pas dans une boucle bien sur, sinon, ça marchera apa) et que chaque ligne exécute son fichier individuellement, une ligne après l'autre. À la fin, ajoute un header vers un autre fichier qui exécute un unlink sur ce fichier temporaire et le tour est joué.
Posté : 23 août 2005, 18:57
par Xenon_54
Bonjour,
Selon moi, et d'après un script que j'ai vu qui permettait de contourner ce problème, tu peux générer un fichier spécial qui exécutera chacun de tes fichiers et lorsque termine, il fera une redirection HTML vers le suivant et ainsi de suite. Ainsi, la limite n'est jamais atteinte puisqu'une nouvelle exécution se fait à chaque fois.
Posté : 23 août 2005, 19:01
par Cyrano
Mouais, c'est le même principe, suaf que ça risque de faire beaucoup de fichiers là où je n'en fais qu'un seul

Posté : 23 août 2005, 19:03
par HD
Bonjour,
Selon moi, et d'après un script que j'ai vu qui permettait de contourner ce problème
tu l'as ce script ou un lien stp ?
Posté : 23 août 2005, 19:09
par Cyrano
Ben non, mais tu l'as toi-même: tu as une ligne qui lance l'exécution d'un des fichiers ? Ben fais une liste des fichiers avec une petite fonction en enregistrant les noms de fichiers dans un tableau indexé. Ensuite, crée un fichier avec fopen() (en mode w bien sur) et dans une boucle écris la ligne qui exécute le fichier en recommançant pour chacun des fichiers. Après la boucle, ajoute un header qui pointe vers un autre fichier (à créer) qui contient une commande unlink() pour supprimer le fichier temporaire créé et un header vers une page à afficher.
Est-ce que tu te représentes shématiquement l'idée ?
Posté : 23 août 2005, 19:29
par Xenon_54
Bonjour,
Cyrano, il n'y a aucunement besoin de créer des fichiers temporaires. Je ne vois pas d'où tu as pu tirer cette idée. Le but est d'exécuter une série de fichiers se trouvant dans un répertoire donné. Pourquoi alors refaire des fichiers temporaires pour exécuter ces même fichiers?
Il suffirait de créer un seul fichier qui se chargerait d'exécuter tous les fichiers existants:
<?php
echo '<h1>Exécution automatique</h1>';
if (FALSE === ($files = glob("./exec/*.php"))) {
exit('Répertoire inexistant');
}
$file = isset($_GET['file']) ? intval($_GET['file']) : 0;
if (FALSE == isset($files[$file])) {
exit('Fin de l\'exécution');
}
include($files[$file]);
header('Refresh:2;url=exec.php?file=' . ++$file);
?>
Et ce script fonctionne puisque je viens de le créer et tester.
Posté : 23 août 2005, 19:40
par Cyrano
L'idée du fichier temporaire est que, si ces fichiers sont applés à changer en nombre, voire à être remplacés par d'autres avec des noms différents.
Mais si ce sont toujours les mêmes fichiers, alors effectivement, un fichier en dur fera l'affaire et on court-circuite le listage des fichiers du répertoire.
Posté : 23 août 2005, 19:43
par Xenon_54
Bonjour,
Je ne vois pas toujours leurs utilités. Peu importe le changement de nom, cela ne changera pas au fait que tu devras les connaitre pour les éxécuter. Et ce que le script précédent fait : il récupère dynamiquement les fichiers présents dans le répertoire et les exécute.
Sincèrement, je ne comprends pas trop le pourquoi de la création de ces fichiers. Un seul fichier maitre responsable de leur appel fait entièrement le travail. Alors il faudrait peut-être réviser ta copie.
Posté : 23 août 2005, 19:46
par HD
merci a tous je vous tiens au courant
en attendant s'il y a des complements d'infos je suis preneur !