如何安排/排队内容以便在PHP中发布未来日期?

时间:2010-12-04 01:04:48

标签: php cron queue scheduled-tasks task-queue

我有一个非常基本的PHP脚本,我用它来发布有趣的链接,我发现我的网站上的可过滤列表以及我的RSS订阅源(当发布时,还有feedburner和推文)。

我想知道添加一个'队列'是多么困难,我可以一次提交多个条目并安排每个条目的未来时间/日期发布?

类似于Twuffer对Twitter或Tumblr以及Wordpress为博客帖子所做的事情。

这需要cron工作吗?也许我的PHP脚本编写另一个文件'drafts.txt'如果它是未来的帖子 - 并且预定的cron检查如果时间/日期=,则将其写入其他文件

我显然是这个新手 - 但我会感激任何帮助!谢谢!

这是我目前的小脚本:

<?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>");
}
?>

2 个答案:

答案 0 :(得分:2)

这就是我最终做的事情(感谢Alfred让我思考正确的方向):

  • 我在表单中添加了一个单选按钮以发布&#34;现在&#34;或者&#34;稍后&#34;。
  • 选择&#34;稍后&#34;揭示了一个日期选择器,它将日期时间var传递给我的脚本,以便我希望文章发布。
  • 在我的剧本中,如果&#34;现在&#34;如果选中,数据将直接写入.txt文件,如上所示。如果&#34;后来&#34;如果选中,则将数据(带有发布时间戳)写入MySQL数据库。
  • 我安排了一个cron作业,每十分钟运行一个另一个php脚本来写入任何带有时间戳的数据,该时间戳已传递到我的.txt文件并从数据库中删除该条目。

效果很好!

答案 1 :(得分:1)

我猜你可以在here以上阅读更多相关信息,但请快速摘要:

  

使用cron在常规上执行作业   安排(例如,运行自动磁带)   备份每个工作之夜或生成   月末报告)。用于运行   在将来的某个时间做一次工作。   使用它们来自动化你的   重复的任务!

我猜您应该使用at来安排任务


但您还可以查看Google应用引擎task queue / cron,以便免费安排任务(慷慨的配额)。它使用webhooks来执行任务并自动扩展。