Как составить расписание / очередь содержимого для будущей даты публикации в PHP? - PullRequest
3 голосов
/ 04 декабря 2010

У меня есть очень простой 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 ]

2 голосов
/ 26 января 2011

Вот что я в итоге сделал (спасибо Альфреду за то, что заставил меня задуматься в правильном направлении):

  • Я добавил переключатели в своей форме, чтобы публиковать «Сейчас» или «Позже».
  • При выборе «Позже» открывается средство выбора даты, которое передает переменную datetime в мой сценарий, когда я хочу опубликовать статью.
  • В моем сценарии, если выбрано «Сейчас», данныезаписывается непосредственно в файл .txt, как показано выше.Если выбрано «Позже», данные записываются (с отметкой времени публикации) в базу данных MySQL.
  • Я запланировал задание cron запускать другой скрипт php каждые десять минут, чтобы записывать любые данные с прошедшей отметкой времени.в мой файл .txt и удалите запись из БД.

Отлично работает!

1 голос
/ 04 декабря 2010

Вы можете прочитать об этом больше здесь Полагаю, но краткое резюме:

Используйте cron для выполнения заданий на регулярной основе расписание (например, запустить автоматическую ленту резервное копирование каждую ночь работы или генерировать отчеты на конец месяца). Используйте для запуска работа один раз в какое-то время в будущем. Используйте их оба для автоматизации вашего повторяющиеся задания!

Полагаю, вы должны использовать at для планирования ваших задач


Но вы также можете взглянуть на движок приложений Google очередь задач / cron , чтобы запланировать свои задачи бесплатно (щедрая квота). Он использует webhooks для автоматического выполнения задач и масштабирования.

...