2010-12-04 50 views
3

J'ai un script PHP très basique que j'utilise pour poster des liens intéressants que je trouve sur une liste filtrable sur mon site et aussi sur mon flux rss (qui feedburner puis tweete aussi quand cinglé). Ce que je me demande, c'est combien il serait difficile d'ajouter une 'file d'attente' dans laquelle je pourrais soumettre plusieurs entrées à la fois et programmer une date/heure future pour chacune d'entre elles?Comment planifier/mettre en file d'attente du contenu pour une date future Publier en PHP?

Semblable à ce que fait Twuffer pour Twitter ou Tumblr et Wordpress l'ont fait pour les articles de blog.

Est-ce que cela nécessite des tâches cron? Peut-être avec mon script PHP écrire un autre fichier 'drafts.txt' si c'est un post futur - et un cron programmé pour vérifier si time/date =, puis l'écrire dans les autres fichiers?

Je suis évidemment un débutant avec ceci - mais j'apprécierais n'importe quelle aide! Merci!

Voici mon petit script actuel:

<?php 

if($_POST['Submit']) 
{ 
$category = $_POST['category']; 
$linkurl = $_POST['linkurl']; 
$linkname = $_POST['linkname']; 
$description = $_POST['description']; 
$submittername = $_POST['submittername']; 
$submitterurl = $_POST['submitterurl']; 
$postdate = $_POST['postdate']; 

// Remove slashes. 
$description = stripslashes($description); 

//the data for list.txt 
$data = " 
<li class='$category'> 
    <h3><a href='$linkurl' target='_blank'>$linkname</a></h3> 
    <p><b>$description</b></p> 
    <p><small>Submitted by: <a href='$submitterurl' target='_blank'>$submittername</a><i> - $postdate</i></small></p> 
</li> 
"; 

$filename = "list.txt"; 

$fp   = fopen($filename,"r"); 
$OldData = fread($fp, 80000); 
fclose($fp); 

$New = "$data$OldData"; 

$fp = fopen($filename,"w"); 
if(!$fp) die("Cannot write $filename ."); 
fwrite($fp, $New, 800000); 
fclose($fp); 

//the data for rss.php 
$feeddata = " 
<item> 
    <title>Supplement: $linkname</title> 
    <link>$linkurl</link> 
    <description>$description</description> 
</item> 
"; 

$ffilename = "rss.txt"; 

$ff   = fopen($ffilename,"r"); 
$OldfeedData = fread($ff, 80000); 
fclose($ff); 

$New = "$feeddata$OldfeedData"; 

$ff = fopen($ffilename,"w"); 
if(!$ff) die("Cannot write $ffilename ."); 
fwrite($ff, $New, 800000); 
fclose($ff); 


print("<h1>Success!</h1><a href='add.php'>Add Another?</a>"); 
} 
?> 

Répondre

1

Vous pouvez en savoir plus sur ce sur here je suppose, mais un rapide résumé:

cron utiliser pour exécuter des tâches sur un horaire régulier (par exemple, exécuter une sauvegarde automatique chaque nuit de travail ou générer des rapports de fin de mois ). Utilisez sur pour exécuter un travail une fois dans le futur. Utilisez-les pour automatiser vos tâches répétitives !

Je suppose que vous devez utiliser at pour planifier vos tâches


Mais vous pouvez aussi jeter un oeil à moteur Google App task queue/cron pour planifier vos tâches (quota généreux) gratuit. Il utilise webhooks pour exécuter des tâches et des échelles automatiquement.

+0

Merci pour l'aide - vous m'avez fait penser dans la bonne direction! – Josiah

2

Voici ce que je fini par faire (grâce à Alfred pour me faire penser dans la bonne direction):

  • J'ai ajouté des boutons radio dans mon formulaire pour publier « maintenant » ou « plus tard ».
  • La sélection de "Plus tard" révèle un outil de sélection de date qui transmet une variable datetime à mon script pour savoir quand je souhaite que l'article soit publié.
  • Dans mon script, si "Maintenant" est sélectionné, les données sont écrites directement dans le fichier .txt comme indiqué ci-dessus. Si "Plus tard" est sélectionné, les données sont écrites (avec l'horodatage de publication) sur une base de données MySQL.
  • J'ai planifié un travail cron pour exécuter un autre script php toutes les dix minutes pour écrire des données avec un horodatage qui est passé à mon fichier .txt et supprimer l'entrée de la base de données.

Fonctionne bien!