Форум → Программирование → PHP для идиотов → Создание cron скрипта
Создание cron скрипта
Страницы: ← Следующая страница →
-
Всем привет. Передо мной стала задача сделать скрипт который бы автоматически делал нужные мне задачи. Т.к. практики в этой области у меня нет, прошу помощи от вас. Собственно нужно, чтобы скрипт при первом запуске брал первый элемент массива, хешировал его в md5 и как-нить запоминал сам факт того, что с этим элементом массива он работал уже. Далее при втором запуске, скрипт проверял сколько времени прошло с момента его работы с первым элементом массива и если прошло менее 6-ти часов, он пропускает первый элемент массива и начинает работать со вторым и так далее до окончания массива. После окончания массива, скрипт снова ж таки проверял сколько прошло времени с момента его работы с первым массивом, и если прошло более 6-ти часов, он начинал работать с первым элементом. Сам же скрипт я хочу поставить на cron с интервалом запуска 20-30 минут.
З.Ы. Гугление, как и поиск на этом форуме, вразумительных результатов не дало :( -
10 июля 2009 г. 10:38, спустя 6 минут 17 секунд
отлично
задачу надо разбить на логические этапы
1. как задание в crontab ставить умеем?
2. как в скрипте хешировать первый элемент массива умеем?
3. как запомнить факт работы с этим элементом массива мы умеем? (записать в файл, базу)все умрут, а я изумруд -
10 июля 2009 г. 11:04, спустя 25 минут 50 секунд
md5, первые 2 пункта умеем, а вот с последним небольшие проблемы.. -
10 июля 2009 г. 11:11, спустя 7 минут 31 секунду
felix90, какие проблемы?
запиши в файл рядом со скриптом индекс элемента массива, с которым ты уже работалвсе умрут, а я изумруд -
10 июля 2009 г. 11:14, спустя 2 минуты 35 секунд
В файл данные записать смогу (к примеру при помощи класса дуда), а вот как делать поиск по этому файлу того или иного элемента массива и как ставить условие при поиске относительно времени (6-ти часовой интервал) - вот с этим проблемка.. -
10 июля 2009 г. 11:27, спустя 13 минут 6 секунд
какого класса дуда?
[man]file_put_contents[/man]
что это за массив и что за временной интервал? зачем это вобще нужно?все умрут, а я изумруд -
10 июля 2009 г. 11:38, спустя 11 минут 9 секунд
http://pyha.ru/forum/topic/2387.0
В общем я написал скрипт, который парсит достаточно много страниц из стороннего сайта. Проблема в том, что этот сторонний сайт, а точнее его сервер в целом, банит ip моего сервера думая, что это ддос атака. Вот именно для этого я решил написать так сказать бота, который каждые 6 часов будет автоматически парсить страницы того сайта и сохранять результаты в файлы. Сам массив имеет вид:$scan = array ("6542","7630","5065","4807","6141","6355","7080","3939","4557","2139");
Вот мне нужно подставлять каждый элемент этого массива по очереди в некую функцию Get и сохранять результат при помощи функции save.
То есть пример:
for ($i=0;$i<sizeof($scan);$i++){
$a = Get($curl,$scan[$i]);
save($scan[$i].'_work',$a);
} -
10 июля 2009 г. 12:34, спустя 56 минут 25 секунд
DudeFile и DudeFileIterator )))
Дуд, сделай человеку DudeCron )https://smappi.org/ - платформа по созданию API на все случаи жизни -
-
10 июля 2009 г. 14:52, спустя 2 часа 7 минут 45 секунд
Запускать каждые 6 часов :-)$scan=(1123,3123,42334,56346,476457);//Это Вы лучше меня знаете .. что оно означает
$n = read_param_from_file();
//если таблица закончилась, то идём по второму кругу
if($n >= count($scan)){
$n = 0;
}
$content = Get($curl,$scan[$n]);
save_content_to_file($scan[$n].'_work',$content);
//Сдвигаемся на следующий элемент таблицы
$n++;
save_param_to_file($n); // Запоминаем .. что будем смотреть при следующем запуске
} -
10 июля 2009 г. 15:45, спустя 52 минуты 50 секунд
AndryG, спасибо конечно, но такое я и сам мог замутить. Мне нужно, чтобы была сверка именно с временем последнего парсинга элемента массива. -
10 июля 2009 г. 18:13, спустя 2 часа 27 минут 57 секунд
вот не поверишь …. есть у меня такая вещь … для удобства. CronManager своеобразный)
DudeFile и DudeFileIterator )))
Дуд, сделай человеку DudeCron )Сапожник без сапог -
-
10 июля 2009 г. 21:51, спустя 3 часа 11 минут 33 секунды
Ну простите … обломался … пару раз стартовый прочел и понял, что обломался :-)
На вскидку … $scan делаем ассоциированным масивом.
В ключе держим ваш код, в значении - время последней обработки.
Скрипт запускаем … вычисляем текущее время, отнимаем 6 часов (и в $tmp записали) …
и отбираем все элементы $scan, с значением меньше $tmp (значит время меньше, чем текущее минус 6 часов - то, что вам надо)
Опосля обработки, в $scan обновляем время для нужного ключа - текущее время туда записываем.
Если запускаете каждые 30 минут – надо изначально таблицу инициализировать значениями "в разброс" … дабы на каждый сеанс скрипта попадала только часть записей $scanСпустя 24 сек.Или я опять криво понял Вашу задачу? -
10 июля 2009 г. 21:33, спустя 23 часа 42 минуты 33 секунды
почему все так сложно ???
просто надо чуток преобразовать ваш массив…
у вас сейчас так :$scan = array ("6542","7630","5065","4807","6141","6355","7080","3939","4557","2139");
попробуйте сделать так :$scan = array (6542=>'success', 7630=>'success', 5065=>'pending', 4807=>'pending', 6141=>'pending' /*и т.д.*/ );
т.е. просто для каждого эл-та ставим флаг "выполнен/невыполнен".
крон запускается раз в 6 часов.
скрипт берет массив из него первый эл-нт который с кодом "pending", запускает задачу, после завершения ставит статус "success".
ну логика ясна ?
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!