[PHP] Créer un fichier a nom variable

Résolu/Fermé
winco07 Messages postés 118 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 octobre 2012 - 22 janv. 2009 à 10:54
winco07 Messages postés 118 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 octobre 2012 - 22 janv. 2009 à 17:14
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
A voir également:

10 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 janv. 2009 à 11:05
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');
0
winco07 Messages postés 118 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 octobre 2012
22 janv. 2009 à 11:15
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."/";
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 janv. 2009 à 11:32
$fichier="chemin d'accès/".$oldfile."/"

pourquoi le / à la fin il le faut pour un repertoire mais pas pour un nom de fichier
0
winco07 Messages postés 118 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 octobre 2012
22 janv. 2009 à 11:42
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 janv. 2009 à 12:07
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")
0
winco07 Messages postés 118 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 octobre 2012
22 janv. 2009 à 12:25
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.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 janv. 2009 à 14:55
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);
0
winco07 Messages postés 118 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 octobre 2012
22 janv. 2009 à 15:03
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
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 janv. 2009 à 16:48
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 ?????
0
winco07 Messages postés 118 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 octobre 2012
22 janv. 2009 à 17:14
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.
0