[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: автоматическое удаление с помощью CRON
MillerLight
Всем привет!
впервые сталкиваюсь с CRON smile.gif

Задача такая: Автоматическое удаление из БД в заданное время.(в данном случае по дате.)

Условие как правильно все сделать на моем хостинге тут

по условию в поле задание нужно писать так:
curl -s http://ваш-домен.ru/папка_со_скриптом/файл_скрипта.php

Я написал так:
curl -s http://www.МОЙ.ru/blocks_avtodelete/avto_delete.php

В файле avto_delete.php только это:

PHP
<?php 
mysql_query
("delete from apartment1 where and_date = NOW()"); 


Явно что то не так творю... Не могу догнать sad.gif

Если кто т что то знает smile.gif Подскажите пожалуйста rolleyes.gif



Спустя 3 минуты, 57 секунд (12.09.2009 - 18:51) kirik написал(а):
Цитата (MillerLight @ 12.09.2009 - 10:47)
В файле avto_delete.php только это

А где подключение к mysql серверу, выбор БД?

Спустя 21 минута, 19 секунд (12.09.2009 - 19:13) MillerLight написал(а):
Вы предлагаете так?

PHP
<?php 
$db 
mysql_connect ("localhost","Login","Password");
mysql_select_db ("Name БД",$db);
mysql_query("delete from apartment1 where and_date = NOW()"); 

Спустя 3 минуты, 1 секунда (12.09.2009 - 19:16) Soldier Ghost написал(а):
А ты чё думал к базе телепатически конектится? laugh.gif

Спустя 2 минуты, 19 секунд (12.09.2009 - 19:18) kirik написал(а):
Цитата (MillerLight @ 12.09.2009 - 11:13)
Вы предлагаете так?

Как-то так smile.gif

Спустя 22 минуты, 18 секунд (12.09.2009 - 19:40) MillerLight написал(а):
Не сработало..... sad.gif и даже отчет о проделанной работе не пришел. А раньше ошибки какие то приходили))))

Спустя 19 минут, 56 секунд (12.09.2009 - 20:00) Гость_hara написал(а):
cron посылает что то на емейл только если была ошибка обработки задания,
т.е. если допустим не нашёл твой файл, или были какие то ошибки выполнения,
а если всё прошло удачно то ничего и не прийдёт.

так что проверяй по факту. либо добавь в свой сприт что бы он тебя сам уведомлял о своей работе.

Спустя 4 часа, 17 минут, 34 секунды (13.09.2009 - 00:18) MillerLight написал(а):
Ситуация теперь такая))))

На локальном сделал следующее:

PHP
<?php include ("../blocks_avtodelete/avto_delete.php");


прописал это как раз перед циклом вывода всех строк из БД

На локальном работает... На внешке нет ohmy.gif
Может кто сталкивался? Как думаете в чем может быть причина?

пробал через phpmyadmin на внешке в SQL-запрос вводить:

PHP
delete from apartment1 where and_date NOW()


Изменений никаких. И ошибок не выдает. Зеленая галочка и пишет что удалено 0 строк... В самой таблице есть записи. Вводил для теста и менял дату удаления. and_date формат гггг-мм-дд

Спустя 9 часов, 8 минут, 51 секунда (13.09.2009 - 09:27) Гость_hara написал(а):
сам то понимаешь что значит and_date = NOW() ?

Спустя 4 часа, 50 минут, 13 секунд (13.09.2009 - 14:17) MillerLight написал(а):
конечно.
and_date есть такой столбец в таблице в которую вводится дата удаления.
NOW() - настоящая дата
Фоматы совпадают (гггг-мм-дд)

Следовательно когда сравняются значения действие произойдет... smile.gif

Другими словами:

PHP
delete from apartment1 where and_date NOW()


Удалить из таблицы apartment1 "где" или "когда" введенная дата сравняется с настоящей)))

Спустя 10 минут, 57 секунд (13.09.2009 - 14:28) Гость_hara написал(а):
ну если тип поля date а не datetime тогда ладно)

можно предположить что он некорректно приводит NOW() к типу DATE()
тогда попробуй CURDATE() вместо NOW()

Спустя 11 минут, 4 секунды (13.09.2009 - 14:39) MillerLight написал(а):
Все отлично! Спасибо ОГРОМНОЕ! user posted image
Теперь попробую с этим же Cron настроить.

Спустя 8 минут, 37 секунд (13.09.2009 - 14:47) MillerLight написал(а):
и cron заработал))))
Еще один вопросик.

Конечно мог бы методом тыка решить его но чтоб уж время не терять спрошу rolleyes.gif

По условию:
PHP
delete from apartment1 where and_date CURDATE()


так удалится только из apartment1, а как прописать правильнее чтоб удалялось и из apartment2 apartment3?
Это "*" поможет если прописать в запросе так:

PHP
delete from where and_date CURDATE()

Спустя 27 минут, 12 секунд (13.09.2009 - 15:15) Guest написал(а):
apartment1, apartment2, ////

Спустя 34 минуты, 52 секунды (13.09.2009 - 15:49) MillerLight написал(а):
Так почему то не сработало apartment1, apartment2, ////
PHP
<?php 
$db 
mysql_connect ("localhost","LOGIN","PASSWORD");
mysql_select_db ("NAME БД",$db);
mysql_query("DELETE from apartment1, apartment2, apartment3  WHERE and_date = CURDATE()"); 



А вот если прописывать для каждой таблицы тогда работает:

PHP
<?php 
$db 
mysql_connect ("localhost","LOGIN","PASSWORD");
mysql_select_db ("NAME БД",$db);
mysql_query("DELETE from apartment1 WHERE and_date = CURDATE()"); 
mysql_query("DELETE from apartment2 WHERE and_date = CURDATE()"); 
mysql_query("DELETE from apartment3 WHERE and_date = CURDATE()");


Это все прописал в CRON иначе если прописать на страницу перед циклом тогда я думаю грузится будет намного дольше. (Таблиц то не 3 а в 10 раз больше...) Скрипт запускается каждый день в определенное время.

Так надеюсь можно? Или все таки можно как то по другому?

Спустя 15 минут, 8 секунд (13.09.2009 - 16:05) Гость_hara написал(а):
ну да пардон
DELETE table1.*, table2.*,table3.* FROM table1, table2, table3 WHERE ...
или с join-ом

да по крону нормально, если не успевает выполниться за лимит, то раздели на части,
и сделай два три скрипта

Спустя 1 день, 1 час, 53 минуты, 44 секунды (14.09.2009 - 17:58) MillerLight написал(а):
Спасибо Гость_hara wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.