[PHP] Créer un fichier a nom variable [Résolu/Fermé]

Signaler
Messages postés
118
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
5 octobre 2012
-
Messages postés
118
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
5 octobre 2012
-
Bonjour,

Mon souci ce matin est de créer un fichier avec un nom variable. je m'explique.J'ai 2 fichiers un avec mes fonctions et un autre qui fait appel a ces fonctions. Quand je fais appel a une fonction une variable est passée en paramètre.

Dans mon second fichier (celui où se trouve les fonctions ) la variable est récupérée pour être utiliser. Celle si est utilisée pour récupérer le fichier correspondant et je voudrais aussi qu'elle serve pour créer un fichier( .ics ).
Quand je lance mon script une erreur s'affiche "Can't create local calendar file".

-Déjà, est-ce possible ?

Voici le code :

Fichier appel des fonctions :

import ('abrlt/');
import ('mee/');
import ('crssl/');
import ('eblnvn/');
...


Fichier qui contient la fonction :

function import ($oldfile){
$fichier="Chemin d'accès".$oldfile;
$tabfich=file($fichier);
$ouvre = @fopen($oldfile.'.ics',"w") or die("Can't create local calendar file"); // ouverture en lecture (w)
for( $i = 0 ; $i < count($tabfich) ; $i++ )
{
$ligne = $tabfich[$i];
echo '<pre>'.$ligne.'</pre>';

fwrite($ouvre,$ligne); // écriture fichier
}
fclose($ouvre); // fermeture fichier
}



Merci pour vos réponses

10 réponses

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
888
Bonjour,

je ne comprend pas :

$fichier="Chemin d'accès".$oldfile;
$tabfich=file($fichier);
$ouvre = @fopen($oldfile.'.ics',"w")


la fct file fonctionne car tu lui dis d'ouvrir $fichier qui contient le chemin d'accès jusqu'au fichier

pour fopen tu lui fait ouvrir/creer sans mettre le chemin d'accès

et en plus tu mets dans l'appel par exemple import ('abrlt/');

donc $oldfile.'.ics' va contenir abrlt/.ics ça doit géner !!

ce n'est pas plutôt import ('/abrlt');
Messages postés
118
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
5 octobre 2012

en ce qui concerne le chemin d'accès c'est celui qui est sur un serveur distant c'est pour ca que je n'ai pas mis d'adresse. Pour la création du fichier celui ci se crée la ou se trouve le fichier php donc je n'ai pas besoin de lui mettre une adresse de destination

Pour ce qui est du "/" $oldfile effectivement c'est pas judicieux pour créer un fichier (erreur d'inattention )

J l'ai enlevé et c'est bon le fichier est bien créer mais le fichier de source n'est plus trouvé :s
J'ai remplacé par : $fichier="chemin d'accès/".$oldfile."/";
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
888
$fichier="chemin d'accès/".$oldfile."/"

pourquoi le / à la fin il le faut pour un repertoire mais pas pour un nom de fichier
Messages postés
118
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
5 octobre 2012

Ben je sais pas trop. Quand on se rend a l'adresse home/ par exemple on télécharge un fichier directement. C'est pas moi qui ait mis le système en place.

La lecture et l'écriture du premier fichier marche mais c'est au second que ca bloque maintenant
erreur : Fatal error: Maximum execution time of 30 seconds exceeded in d:\www\test\EnrFichier.php on line 15

Je sais pas si c'est la bonne méthode de mettre à la suite les uns des autres les imports ?
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
888
ha bien oui si tes fichiers sont volumineux le temps de traitement est ropt longs si tu en fait 4 dans le même script

mais je vois que tu lis dans un fichier et écris dans le même avec une extension .ics sans rien changer aux données

pourquoi tu ne fais pas un rename en php de ton fichier

rename($old_fichier,$old_fichier.".ics")
Messages postés
118
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
5 octobre 2012

Je suis que stagiaire. J'ai proposé cette solution mais elle n'a pas été validé.
J'ai envoyer mes fichiers sur le serveur et tout fonctionne bien. Quelque réglage de phpicalendar s'impose mais sinon mon agenda commun pourra fonctionner.

Quand mon tuteur verra le temps de chargement des fichiers peut être qu'il optera pour un rename ^^

En tout cas merci pour ton aide.
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
888
ce que tu peux faire c'est faire traiter seulement un fichier par script

tu fais une page html toute simple avec 4 liens

<a href="ton_script_de_traitement.php?fichier=abrlt">traiter fichier abrlt</a><br />
<a href="ton_script_de_traitement.php?fichier=mee">traiter fichier mee</a><br />
<a href="ton_script_de_traitement.php?fichier=crssl">traiter fichier crssl</a><br />
<a href="ton_script_de_traitement.php?fichier=eblnvn">traiter fichier eblnvn</a><br />


en cliquant sur chaque lien ça va appeler le script en lui passant le fichier a traiter


et dans ton script de traitement tu récupères le fichier a traiter par

$fich_a_traiter=$_GET|'fichier'];

et tu mets un seul appel de fonction:

import ($fich_a_traiter);
Messages postés
118
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
5 octobre 2012

Ce qu'il y a c'est que le script doit être autonome, il sera dans une fonction cron qui l'exécutera toutes les n minutes donc pas de lien possible.

Puis il n'y a ps que 4 scripts mais 23 pour l'instant donc bon pas simple
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
888
he bien si c'est un cron tu dois pouvoir lancer les scripts un par un en décalé dans le temps

tu créee autant de cron que de scripts a lancer en décalant l'heure de lancement

ou le cron lance un script shell qui par une boucle lance les scripts php ?????
Messages postés
118
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
5 octobre 2012

pour l instant le cron n'est pas encore en place, je sais pas trop comment ca marche et c'est mon collègue qui va s'en occupé.
Vu qu'il travail a distance je l'ai pas eu au tel pour savoir comment il voulait procédé.
Puis mauvaise nouvelle notre serveur distant est tombé en début d'aprem donc je n'ai pas pu faire de nouveau test.