CRON webmin ovh

Eléphant du PHP | 299 Messages

29 juil. 2012, 23:59

Hello a tous!

Je debute avec les CRON et je suis un peu perdu.

Je propose a mes visiteurs d' uploader des fichiers de petites tailles, qui resteront admettont 24h pour les non inscrits, et 1 mois pour les membres.

Deux questions s'offrent a moi:

comment faire ca sachant que je ne veux pas que tous les fichiers soient supprimés a minuit prochain mais bien 24h aprés que le visiteur l' ai upladé, parce que si il envoie un fichier a 23h....

Ensuite, comment utiliser les sessions avec les crons.

Je suis totalement paumé. Un lien eventuellement d'explication ou des conseils seraient la bienvenue.


Cdt

ViPHP
AB
ViPHP | 5818 Messages

30 juil. 2012, 04:17

Un cron n'est rien d'autre que l'exécution programmée d'un fichier qui se trouve sur ton serveur.

Pour ton pb, lors de l'upload tu peux enregistrer dans une bdd le nom du fichier avec une date de péremption qui sera soit j+1 soit m+1. Avec mysql c'est facile :
$query = "INSERT INTO tab_fich  (adresse_fich,date_fin) VALUES('".$adresse_fichier."',DATE_ADD(NOW(), INTERVAL 1 MONTH))";
ou si non inscrit :
$query = "INSERT INTO tab_fich  (adresse_fich,date_fin) VALUES('".$adresse_fichier."',DATE_ADD(NOW(), INTERVAL 1 DAY))";
Et avec ton script cron (que tu lance tous les jours si tu utilise le format DATE ou plusieurs fois par jour pour être plus précis si tu veux utiliser DATETIME) tu supprime les fichiers dont la date actuelle est supérieure à la date de fin enregistrée.
$query = "SELECT adresse_fich FROM tab_fich WHERE NOW() > date_fin";
if($ressource = mysql_query($query))
{
while($result = mysql_fetch_assoc($ressource)) unlink($result['adresse_fich']);
}
Faut juste prendre soin que le champ "date_fin" soit au format date ou datetime dans mysql.