Перейти к содержанию

Как повесить выполнение sql команд на cron?


Рекомендуемые сообщения

Погуглил. Предлагают создать файл sql, в котором прописать команды. Например:

UPDATE db_name.ibf_core_tags SET tag_text=REPLACE(tag_text, 'tag1', 'tag2');
UPDATE db_name.ibf_core_tags SET tag_text=REPLACE(tag_text, 'tag3', 'tag4');

Как теперь прописать команду запуска в кроне? Какая команда и верен ли такой подход? Крон имеет графическую оболочку в панели ISP Manager. 

Изменено пользователем Zero108
Ссылка на комментарий
Поделиться на другие сайты

Подскажите, а через локальный путь как запустить такую команду? Нужно ли в самом файле прописывать атрибуты пхп ( <php и т.п.)? И что означает ключ -O-?

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, Zero108 сказал:

Подскажите, а через локальный путь как запустить такую команду? Нужно ли в самом файле прописывать атрибуты пхп ( <php и т.п.)? И что означает ключ -O-?

 

Цитата

Журналирование и входной файл:
  -o,  --output-file=ФАЙЛ    записывать сообщения в ФАЙЛ


Непонятно, для чего это здесь

И wget обычно скачивает файл, для просто выполнения желательно использовать curl

Выполнить локальный скрипт через крон можно так

/opt/php74/bin/php /var/www/user/data/script.php

Где /opt/php74/bin/php - ссылка на дистрибутив PHP

Ссылка на комментарий
Поделиться на другие сайты

Достаточно ли в самом файле прописать команды sql или нужно добавить в начале и конце атрибуты пхп: <php и т.п.?

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, Zero108 сказал:

Достаточно ли в самом файле прописать команды sql или нужно добавить в начале и конце атрибуты пхп: <php и т.п.?

нужно полностью оформить как php код, т.е. со всеми атрибутами

Соответственно со всеми подключениями к БД

Ссылка на комментарий
Поделиться на другие сайты

Можно попросить образец такого файла, где осталось только подставить sql команды, указанные выше? Файл будет запускаться из папки сайта на движке Invision Community.

Изменено пользователем Zero108
Ссылка на комментарий
Поделиться на другие сайты

<?
$host = "localhost"; // ХОСТ БАЗЫ ДАННЫХ
$name = ""; // ИМЯ БАЗЫ ДАННЫХ
$user = ""; // ПОЛЬЗОВАТЕЛЬ БАЗЫ ДАННЫХ
$password = ""; // ПАРОЛЬ БАЗЫ ДАННЫХ
$connect = "mysql:dbname=$name;host=$host";
$db         = new PDO($connect, $user, $password);

$sql = "UPDATE db_name.ibf_core_tags SET tag_text=REPLACE(tag_text, 'tag1', 'tag2')";
$result = $db->query($sql);
$sql = "UPDATE db_name.ibf_core_tags SET tag_text=REPLACE(tag_text, 'tag3', 'tag4')";
$result = $db->query($sql);
?>

 

3 минуты назад, Zero108 сказал:

Файл будет запускаться из папки сайта на движке Invision Community.

Не важно из какой папки запускать файл. Главное укажите верный путь в кроне

Ссылка на комментарий
Поделиться на другие сайты

50 минут назад, HooLIGUN сказал:

И wget обычно скачивает файл

потому после флага O и стоит дефис второй. 

50 минут назад, HooLIGUN сказал:

Выполнить локальный скрипт через крон можно так

вики арены предлагает оба варианта, значит оба варианта верны. только первый удобнее и запустить можно любой локальный и сторонний файл с любого сайта. 

Изменено пользователем by_ix
Ссылка на комментарий
Поделиться на другие сайты

В мускуле есть свой шедулер, зачем крон мучать?

Включить события
SET GLOBAL event_scheduler=ON;

Создать событие
CREATE EVENT updateevent
    ON SCHEDULE EVERY 1 DAY
    DO 
    UPDATE table_test SET `value` = `value` + 1;

Посмотреть события
SHOW EVENTS;

Удалить событие 
DROP EVENT updateevent;

 

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, Desti сказал:

В мускуле есть свой шедулер

для связки нескольких бд это вариант же не подойдёт. 

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, by_ix сказал:

для связки нескольких бд

Это как? Не увидел такой задачи в вопросе ТС. 

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, Desti сказал:

Не увидел такой задачи в вопросе ТС. 

я в целом говорю. если ему потом нужно будет это, то вопрос с кроном и скриптами снова вернётся. 

Изменено пользователем by_ix
Ссылка на комментарий
Поделиться на другие сайты

В рамках поставленной задачи шедулер мускуля вполне удобное решение. 

Ссылка на комментарий
Поделиться на другие сайты

Мне удобнее cron, так как понятнее. А в мускуле непонятно, какой синтаксис, нужно убить кучу времени, чтобы правильно всё это добавить в маленьком черном окошечке терминала ssh.

Изменено пользователем Zero108
Ссылка на комментарий
Поделиться на другие сайты

Тогда есть еще один способ, вызывать не php, а mysql, cделать файлик с командами и вызывать его.

#!/bin/bash

/usr/bin/mysql --user=username --password=password --database=dbname --execute="UPDATE db_name.ibf_core_tags SET tag_text=REPLACE(tag_text, 'tag1', 'tag2')"
/usr/bin/mysql --user=username --password=password --database=dbname --execute="UPDATE db_name.ibf_core_tags SET tag_text=REPLACE(tag_text, 'tag3', 'tag4')"

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...