2011-10-04 4 views
-1

Je me demandais s'il est possible d'utiliser php pour créer un fichier avec un nom spécifique qui durerait 30 secondes, puis supprimez-le. J'ai regardé les fonctions tmpfile et tmpnme mais je ne dois pas savoir comment les utiliser correctement.Création d'une page de fichiers temporaire en PHP - Possible?

Je voudrais cliquer sur un bouton sur la page Web A, puis afficher les informations sur la page Web B pendant 30 secondes. Une fois les 30 secondes écoulées, les informations changeraient ou disparaîtraient entièrement.

Possible?

+5

Oui, bien sûr - c'est possible, mais pourquoi ne pas "juste" utiliser une seule page avec une chaîne de requête unique à l'utilisateur et valider la page? –

+4

Voir le [Problème XY] (http://www.perlmonks.org/index.pl?node_id=542341) –

+0

Son réellement utilisé pour un programme à regarder. Je clique sur un bouton, et quelque chose sur une page séparée dit "shutdown" que le programme lit et passera automatiquement par son processus d'arrêt. – Konzine

Répondre

1

PHP peut facilement créer un fichier temporaire pour vous, mais ce sera à vous de le supprimer après 30 secondes. PHP n'est pas un planificateur, bien qu'il puisse planifier des choses pour vous via cron ou at.

Votre meilleur pari serait d'intégrer un code supplémentaire dans le script PHP comme il est construit pour spécifier une date d'expiration, que le script généré peut vérifier quand il a commencé:

<?php 

$expires = ...insert some timestamp value here...; 

if ($expires < time()) { 
    unlink(__FILE__); 
    header("Location: somewhere else"); 
    exit(); 
} 

... do whatever you need to here ... 

Ça va prendre soin du script se terminant. Mais si le script n'est jamais accessible en dehors de la fenêtre de 30 secondes, il ne se nettoiera pas, vous aurez donc besoin d'un travail externe pour faire le ménage périodique.

+0

C'est très proche de ce que j'imaginais mais unfrotuntley un peu sur ma tête. Mon idée était d'utiliser des formulaires et POST, et poster sur une page séparée. Le problème est, après 30 secondes, j'ai besoin de l'information pour se terminer ou revenir à une valeur par défaut. Aucune suggestion? – Konzine

+0

Vous pouvez également faire en sorte que le script parent ajoute un travail 'at' pour planifier une tâche de suppression externe afin de supprimer le script/child généré. Cependant, 'at' et' cron' peuvent être programmés au niveau des minutes seulement, pas aux secondes, donc vous ne pouvez pas garantir que le script enfant sera nuké après exactement 30 secondes. Mais avec la suppression externe et la vérification interne du temps, vous pouvez simuler facilement. L'autre alternative est de fork(), et de faire dormir l'enfant pendant 30 secondes puis de dissocier le script enfant. –

0

Vous pouvez créer un fichier comme un fichier XML par exemple. Ajouter un nouveau noeud et l'horodater. Ensuite, votre site Web peut charger le fichier et, en fonction de l'horodatage, afficher le noeud qui n'a pas expiré. Vous n'avez pas à supprimer le fichier ne montre pas les anciennes données. Vous pouvez également lors du chargement du noeud, supprimer les anciens pour éviter que le fichier ne devienne trop volumineux.

+0

Merci! Toute idée où je pourrais voir un exemple ou un script de quelque chose comme ça? – Konzine

Questions connexes