4

私は非常に基本的な PHP スクリプトを使用して、見つけた興味深いリンクを自分のサイトのフィルター可能なリストに投稿したり、RSS フィードにも投稿したりします (このフィードバーナーは、ping を実行するとツイートします)。

一度に複数のエントリを送信し、それぞれがリリースされる将来の日時をスケジュールできる「キュー」を追加するのはどれほど難しいのでしょうか?

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

2 に答える 2

3

これが私がやったことです(正しい方向に考えさせてくれたAlfredに感謝します):

  • 「今」または「後で」投稿するラジオボタンをフォームに追加しました。
  • 「後で」を選択すると、記事を公開したい日時の変数をスクリプトに渡す日付ピッカーが表示されます。
  • 私のスクリプトでは、「Now」が選択されている場合、データは上記のように .txt ファイルに直接書き込まれます。「後で」が選択されている場合、データは MySQL データベースに (公開タイムスタンプとともに) 書き込まれます。
  • 10 分ごとに別の php スクリプトを実行する cron ジョブをスケジュールして、.txt ファイルに渡されたタイムスタンプ付きのデータを書き込み、db からエントリを削除しました。

よく働く!

于 2011-01-25T21:49:05.647 に答える
2

You could read more about this over here I guess, but a quick summary:

Use cron to execute jobs on a regular schedule (e.g., run an automatic tape backup each work night or generate end-of-month reports). Use at to run a job once at some time in the future. Use them both to automate your repetitive tasks!

I guess you should use at to schedule your tasks


But you could also have a look at Google app engine task queue/cron to schedule your tasks for free(generous quota). It uses webhooks to execute tasks and scales automatically.

于 2010-12-04T01:36:38.457 に答える