Поддержка Проблемы и решения Использование WP Cron jobs

  • Доброго времени суток!
    Нужна помощь по настройке WP Cron Jobs.
    Прочитал инструкцию по исопльзованию хуков, но так и ничего не понял…
    Мне нужна функция замены определенного текста в БД MySQL каждые 15 мин.

    Исполняемый код в MySQL

    UPDATE wp_posts SET post_content = REPLACE(post_content, 'Oxu.Az', 'Pressaz24.info');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'www.oxu.az', 'www.pressaz24.info');
    UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt, 'Oxu.Az', 'Pressaz24.info');
    UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt, 'www.oxu.az', 'www.pressaz24.info');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'A.S.', '.');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'Aytən Sadıqzadə', '.');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'Fuad M.', '.');

    Как я могу реализовать подобный функционал в WP?

    P.S. использование MySQL Events невозможно, так как эта функция отключена у хостера. Но у хостера есть ф-ция Cron Jobs.

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Модератор Yui

    (@fierevere)

    ゆい

    у хостера есть ф-ция Cron Jobs.

    т.е. вы хотите без WP?

    Задание для crontab:

    1,16,31,46 * * * * mysql --defaults-extra-file=/путь/к/домашней/папке/mysql.crd -D имя_БД < /путь/к/домашней/папке/script.sql > /dev/null 2>&1
    

    в script.sql кладете ваши запросы sql

    в mysql.crd кладете данные для доступа к БД

    [client]
    user = пользователь
    password = пароль
    host                                    = 127.0.0.1
    port                                    = 3306
    • Ответ изменён 5 лет, 9 месяцев назад пользователем Yui.

    Большое спасибо. Можно через WP Cron или Cron jobs.
    Сейчас попробую.

    Что-то я попробовал, но вроде не работает.
    Добавил свою почту для получения логов
    получил ошибку:
    /usr/local/cpanel/bin/jailshell: /public_html/cgi-bin/script.sql: No such file or directory

    Далее я исправил код:
    1,16,31,46 * * * * mysql --defaults-extra-file=/home/presvizb/public_html/cgi-bin/mysql.crd -D имя БД < /home/presvizb/public_html/cgi-bin/script.sql > /dev/null 2>&1

    Панель управления хостингом CPanel. Частота обновления 15 мин Cron Job. Что я делаю не так?)))

    Содержимое script.sql

    UPDATE wp_posts SET post_content = REPLACE(post_content, 'Oxu.Az', 'Pressaz24.info');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'www.oxu.az', 'www.pressaz24.info');
    UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt, 'Oxu.Az', 'Pressaz24.info');
    UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt, 'www.oxu.az', 'www.pressaz24.info');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'A.S.', '.');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'Aytən Sadıqzadə', '.');

    Содержимое mysql.crd

    [client]
    user = имя пользователя
    password = мой пароль
    host = 127.0.0.1
    port = 3306

    Буду признателен за помощь!

    • Ответ изменён 5 лет, 9 месяцев назад пользователем Phoenix.
    Модератор Yui

    (@fierevere)

    ゆい

    /usr/local/cpanel/bin/jailshell: /public_html/cgi-bin/script.sql: No such file or directory

    вам путь урезается jailshellом
    попробуйте так

    1,16,31,46 * * * * mysql —defaults-extra-file=/public_html/cgi-bin/mysql.crd -D имя БД < /public_html/cgi-bin/script.sql > /dev/null 2>&1

    /usr/local/cpanel/bin/jailshell: /public_html/cgi-bin/script.sql: No such file or directory

    Эта ошибка возникла, когда я указал путь:

    1,16,31,46 * * * * mysql —defaults-extra-file=/public_html/cgi-bin/mysql.crd -D имя БД < /public_html/cgi-bin/script.sql > /dev/null 2>&1

    Когда я изменил код на:

    1,16,31,46 * * * * mysql --defaults-extra-file=/home/presvizb/public_html/cgi-bin/mysql.crd -D имя БД < /home/presvizb/public_html/cgi-bin/script.sql > /dev/null 2>&1
    Я не получаю писем с ошибками… но скрипт сам тоже не работает)

    Модератор Yui

    (@fierevere)

    ゆい

    > /dev/null 2>&1

    вот эта конструкция убирает отсылку писем из крона

    Большое спасибо за ответ)
    Отсылку писем-то конструкция > /dev/null 2>&1 убирает.
    Но sql скрипт не работает. По идее каждые 15 мин крон должен заменять в БД нужные строки, но не работает…
    Приходиться вручную подавать SQL запрос следующего вида:

    UPDATE wp_posts SET post_content = REPLACE(post_content, 'Oxu.Az', 'Pressaz24.info');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'www.oxu.az', 'www.pressaz24.info');
    UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt, 'Oxu.Az', 'Pressaz24.info');
    UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt, 'www.oxu.az', 'www.pressaz24.info');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'A.S.', '.');
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'Aytən Sadıqzadə', '.');

    Все разобрался уже) Большое спасибо за помощь.

    Нужно было указать путь:

    /home/[ваш_логин]/public_html/cgi-bin/script.sql
    /home/[ваш_логин]/public_html/cgi-bin/mysql.crd

    + правильная команда
    mysql —defaults-extra-file=/home/[ваш_логин]/public_html/cgi-bin/mysql.crd -D presvizb_press < /home/[ваш_логин]/public_html/cgi-bin/script.sql > /dev/null 2>&1

    (без 1,16,31,46 * * * *)

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Тема «Использование WP Cron jobs» закрыта для новых ответов.