Задания для CRON'а из PHP

idencial

Одинаковый
Задания для CRON'а из PHP

Предположим есть система публикации новостей, в которой новость можно опубликовать сразу, а можно указать время публикации (отличное от текущего) и при этом должно сформироваться задание для CRON'а опубликовать эту новость в указанное время.

Соотв. проблема в том как из php скрипта добавить задание в CRON, а после выполнения убрать (можно и не убирать, но для порядку =))

Теоретически я могу просто написать
PHP:
exec("crontab $temp_cron_file")
но вот при формировании $temp_cron_file я ведь должен знать какие задания уже есть в CRON, т.к я буду только добавлять их. Вот как сделать это я не знаю
 

nagash

Guest
неправильный подход...
добавляй в базу сразу со временем когда надо публиковать...
и когда выводишь новости сверяй время (когда опубликовать) и время (сейчас)
ну и если время (сейчас) больше то показываешь новости =)
 

pupkin

Guest
IMHO без крона тут вполне можно обойтись... лишний трабл..
 

Фанат

oncle terrible
Команда форума
нагаш золотые слова сказал.
огород вы городите, товарищ
 

idencial

Одинаковый
и когда выводишь новости сверяй время (когда опубликовать) и время (сейчас)
ну и если время (сейчас) больше то показываешь новости =)
Такой подход мне бы подошел, но ...
Дело в том, что у меня лента новостей формируется не из базы, а лента хранится в текстовом файле, который формируется при добавлении новости. Это нужно чтобы базу лишний раз не грузить, т.к сайт посещаемый.
Если я зайду по ssh, то спасет, а как мне это поможет если я имею дело с php?
 

Alien

Новичок
[ice]$ cat i.php
<? echo `crontab -l`; ?>

[ice]$ php -q i.php
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.28294 installed on Tue Aug 26 11:27:09 2003)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
[skip]
 

pupkin

Guest
Дело в том, что у меня лента новостей формируется не из базы, а лента хранится в текстовом файле, который формируется при добавлении новости. Это нужно чтобы базу лишний раз не грузить, т.к сайт посещаемый.
Юзай time() и записывай в текстовый файл и сравнивай.. Какая разница база это или файл.. Идея то всё равно общая..
 

idencial

Одинаковый
Юзай time() и записывай в текстовый файл и сравнивай.. Какая разница база это или файл.. Идея то всё равно общая..
Эту идею я понял, но в файле я ничего не сравнивать не буду, т.к на этом и основан выигрыш в быстродействии.
Лучше будет вернуться к базе или домучать CRON =)

2Alien
А нельзя ли по-подробнее. НЕ до конца понял твой пост
 

pupkin

Guest
Эту идею я понял, но в файле я ничего не сравнивать не буду, т.к на этом и основан выигрыш в быстродействии.
Лучше будет вернуться к базе или домучать CRON =)
Хорошо.. действительно, читать каждый раз содержимое всего новостного файла и сравнивать - дело табак.. но давай подумаем дальше.. заведи себе ещё один файл для новостей, которые нужно опубликовать через время.. сколько у тебя будет таких новостей? 5-10, ну пусть 20.. В этом файле по строчно ID новости и время публикации.. короче, делай проверку по этому файлу.

А ваще изврат это конечно.. имхо найди лучше способ юзать базу.
 

idencial

Одинаковый
База - это конечно хорошо, но заказчик за файл.
Он считает, что так быстрее
Т.е в файле хранится только лента и он считает, что это сильно разгружает базу, хотя полная новость все равно достается из базы
 

nagash

Guest
Дело в том, что у меня лента новостей формируется не из базы, а лента хранится в текстовом файле, который формируется при добавлении новости. Это нужно чтобы базу лишний раз не грузить, т.к сайт посещаемый.
именно поэтому и используй базу
 
Сверху