Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] SQL запросы через планировщик задач


vcat

Recommended Posts

Помогите пожалуйста с решением такой задачи - сайт на Opencart 1.5.5.1, версия SQL - 5.5.4, сайт ежедневно синхронизируется с поставщиков, от которого в базу попадают некоторые некорректные опции. Путем автозамены в SQL их регулярно заменяется, но вручную ежедневно это просто неоправдано.

Задача:

выполнение через event_scheduler в определенное время (ежедневно в 6.00 утра) нескольких запросов типа

UPDATE `oc_product_option_value` SET `product_option_value_id` = REPLACE(`product_option_value_id`, '245277', '12477')

UPDATE `oc_product_option_value` SET `product_option_value_id` = REPLACE(`product_option_value_id`, '4245', '2256')

....

UPDATE `oc_product_option_value` SET `product_option_value_id` = REPLACE(`product_option_value_id`, '32145', '15786')

 

таких запросов - около десятка

 

Буду очень благодарен за подсказку, как это можно прописать.

 

 

Надіслати
Поділитися на інших сайтах


А в случае подтягивания sql скриптов из файла, так:

$lines = file(__DIR__.'/restore_sql.txt');

if ($lines) {
    $sql = '';
    foreach($lines as $line) {
        if ($line && (substr($line, 0, 2) != '--') && (substr($line, 0, 1) != '#')) {
            $sql .= $line;

            if (preg_match('/;\s*$/', $line)) {
                // Выполняем $sql
                ....
                $sql = '';
            }
        }
    }

Надіслати
Поділитися на інших сайтах

<?php
class ControllerToolMyscript extends Controller {
    public function index() {
              $sql = "ваш запрос";
              $sql .= "ваш запрос";
              $sql .= "ваш запрос";
              $sql .= "ваш запрос";
              $sql .= "ваш запрос";
	      $query = $this->db->query($sql);	  
    }
}

Можно еще создать файл myscript.php положить его в catalog/controller/tool

Дергать потом по адресу  /index.php?route=tool/myscript

Надіслати
Поділитися на інших сайтах

Э...

 

Советы советами

Но выполнять крон без "авторизации" дело очень плохое

 

1. Делаем в админке небольшое  расширение, для ввод security_code

 

2. В кроне запускаем через wget  /index.php?route=tool/myscript&security_code=!@#$%$^%^&

 

3. В скрипте проверяем...

Надіслати
Поділитися на інших сайтах

Ну и я вставлю свои 5 коп

<?php
class ControllerToolMyscript extends Controller {
    public function index() {
        if (isset($this->request->get['security_code']) {
              $sqls = array(
                 "ваш запрос",
                 "ваш запрос"
              };
              foreach ($sqls as $sql) {
	        $query = $this->db->query($sql);	  
              }
        }
    }
}
Надіслати
Поділитися на інших сайтах

 

Ну и я вставлю свои 5 коп

<?php
class ControllerToolMyscript extends Controller {
    public function index() {
        if (isset($this->request->get['security_code']) {
              $sqls = array(
                 "ваш запрос",
                 "ваш запрос"
              };
              foreach ($sqls as $sql) {
	        $query = $this->db->query($sql);	  
              }
        }
    }
}

а можно просто сюда вписать данные авторизации, без дополнительного расширения в админке?

 

как писал товарищ nikifalex выше, так понимаю, в его варианте уже предусмотрена авторизация из данных конфига?

 

<?php
include 'config.php';

mysql_connect(DB_HOSTNAME,DB_USERNAME,DB_PASSWORD) or DIE(mysql_error());
mysql_select_db(DB_DATABASE) or die(mysql_error());
mysql_set_charset("UTF8");


$query = mysql_query("update.....");

mysql_close();

Надіслати
Поділитися на інших сайтах


нет у меня авторизации. Сюда по всему, пока Вы не поняли вообще как все работает.

 

Я бы просто закрыл доступ снаружи к скрипту хоть бы через htaccess. И не надо никакую авторизацию. Но это уже совсем другая история

да, тут Вы правы - действительно не разобрался, теперь понемножку проясняется принцип

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.