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

Скрипт (Cron) автоматического обновления валют в ocStore


mdmax

Recommended Posts

Здравствуйте. Уже длительное время не могу найти ответ на свой вопрос. Необходимо автоматичесоке обновление курса валют без входа в админку, т.е. без участия администратора магазина. Погуглив, я пришел к выводу, что нужно ставить в Cron некий скрипт, который производил бы необходимую процедуру обновления курсов. Подскажите, пожалуйста, возможно у кого-то уже есть готовый скрипт или же другие варианты решения проблемы?

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


Система-Настройки-Локализация-Автоматическое обновление валют - не оно разве?

На сколько мне известно, курс меняется только если произвести вход в админпанель. Во всяком случае у меня только так обновляет. А нужно что бы обновление происходило без участия администратора (да и со скриптом можно увеличить частоту обновлений в течение дня, чтобы более гибко реагировать на изменения курса).

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


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

 

Смысла не имеет, курcы, как правило, в течение дня не меняются, тем более на таких серверах, как yahoo

 

Чтобы их обновлять по  cron'у

Нужно выцепить из модели

admin/model/localisation/currency.php

метод updateCurrencies

И обыграть его отдельным скриптом, который запускается по cron'у

Или же сделать клон admin/index.php, написав при этом контроллер update курсов, и прописав в качестве

вместо

$controller->addPreAction(new Action('common/home/login'));

например

$controller->addPreAction(new Action('common/home/контроллер_курсов'));

Сделав предварительную проверку на валидность запроса, или же разрешить запуск этого скрипта только локально

 

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

Смысла не имеет, курcы, как правило, в течение дня не меняются, тем более на таких серверах, как yahoo

 

Чтобы их обновлять по  cron'у

Нужно выцепить из модели

admin/model/localisation/currency.php

метод updateCurrencies

И обыграть его отдельным скриптом, который запускается по cron'у

Или же сделать клон admin/index.php, написав при этом контроллер update курсов, и прописав в качестве

вместо

$controller->addPreAction(new Action('common/home/login'));

например

$controller->addPreAction(new Action('common/home/контроллер_курсов'));

Сделав предварительную проверку на валидность запроса, или же разрешить запуск этого скрипта только локально

 

Да, согласен с вами, что курс в течение дня не меняется практически, это не есть критично. Основная моя цель - обновление курса без надобности заходить каждый день в админку, т.к. по другому у меня не обновляется. Это основной вопрос.

Дело в том, что я не владею знаниями программирования php и прошу вас о помощи.

Вот, к примеру, здесь на форуме нашел скрипт, но у меня он не работает:

<?php

/*
 * CURRENCY UPDATER - v 1.0.0 (22.04.2014)
*/

define('OPENCART_ROOT_DIR', '/путь_до_корня_сайта/admin/');

require_once(OPENCART_ROOT_DIR . "config.php");
require_once(DIR_SYSTEM . 'startup.php');
require_once(DIR_DATABASE . 'mysql.php');

// Registry
$registry = new Registry();

// Loader
$obj = new Loader($registry);
$registry->set('load', $obj);

// Config
$config = new Config();
$registry->set('config', $config);

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);

// Settings
$query = $db->query("SELECT * FROM " . DB_PREFIX . "setting");

foreach ($query->rows as $setting) {
        $config->set($setting['key'], $setting['value']);
}

// Cache
$registry->set('cache', new Cache());

//Request
$request = new Request();
$registry->set('request', $request);

// Language Detection
$query = $db->query("SELECT language_id FROM " . DB_PREFIX . "language WHERE code = '" . $config->get('config_language') .  "'");
$language_id = $query->row['language_id'];
$config->set('config_language_id', $language_id);

// Default Store
$config->set('config_store_id', 0);

//define('HTTP_SERVER', $config->get('config_url'));

//Currency update
$obj->load->model('localisation/currency');
$request->post['manual_update'] = true;
$obj->model_localisation_currency->updateCurrencies();

echo "Done!\n";
?>
Надіслати
Поділитися на інших сайтах


Вот, к примеру, здесь на форуме нашел скрипт, но у меня он не работает:

 

А как вы определили, что он не работает?

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

define('OPENCART_ROOT_DIR', '/путь_до_корня_сайта/admin/');

 

Это меняли?

Да, заменил путь на свой. Скрипт успешно запускается. Вы думаете обновление должно работать?

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


Не вижу причин, чтоб не работало

 

Сделайте копию базы

или таблицы

oc_currency

 

Очистите ее

 

И запустите скрипт

Проверьте.

 

 

Или

$query = $db->query("TRUNCATE " . DB_PREFIX . "currency");

//Currency update
$obj->load->model('localisation/currency');
$request->post['manual_update'] = true;
$obj->model_localisation_currency->updateCurrencies();

$query = $db->query("SELECT * from " . DB_PREFIX . "currency");
print_r($query->rows);

 

 

 

 

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

Не вижу причин, чтоб не работало

 

Сделайте копию базы

или таблицы

oc_currency

 

Очистите ее

 

И запустите скрипт

Проверьте.

 

 

Или

$query = $db->query("TRUNCATE " . DB_PREFIX . "currency");

//Currency update
$obj->load->model('localisation/currency');
$request->post['manual_update'] = true;
$obj->model_localisation_currency->updateCurrencies();

$query = $db->query("SELECT * from " . DB_PREFIX . "currency");
print_r($query->rows);

 

Объясните, пожалуйста, что делает приведенный вами скрипт (прошу прощения, т.к. далек от php)?

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


Скрипт установил на "живой" магазин. В течение дня запускал через Cron несколько раз. Приходили отчеты, что скрипт выполнен успешно. Но, курс так и не изменился. Запуск производил с такими вариантами параметров:

1) /usr/local/php53/bin/php -c /home/директория/.system/php/www.мой_сайтg.ini -f /home/директория/мой_сайт/www/currency-updater.php

2) /usr/local/php53/bin/php -f /home/директория/мой_сайт/www/currency-updater.php

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

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


попробуйте

$obj->model_localisation_currency->updateCurrencies(true);

 

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

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

У меня такая же проблема на нескольких магазинах. Пока не войдешь, не меняется. Я пытался настроить через cron на хостинге, вход в админку раз в сутки. Я не программер и хоть поддержка более менее у хостера, но и там мне не помогли с параметрами cron'а.

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

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


У меня такая же проблема на нескольких магазинах. Пока не войдешь, не меняется. Я пытался настроить через cron на хостинге, вход в админку раз в сутки. Я не программер и хоть поддержка более менее у хостера, но и там мне не помогли с параметрами cron'а.

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

У меня в магазине тоже оформление только после обязательной регистрации. Но, получается, до регистрации покупатель будет видеть одну цену, а после входа в личный кабинет цена будет уже другая. Это не есть хорошо.

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


Согласен. У нас из-за этого были небольшие нюансы. Но я вставил как здесь приведен файл обновления валют-через cron на сервере. У меня работает. т.е. проблема у меня решилась.

 

В посте выше сказано, что файл запускали через: /usr/local/php...... и т.д.

Я запускаю через curl.... Все вроде работает.

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


  • 2 weeks later...

Через: /usr/local/php...... и т.д. тоже работает.

 

Согласен. У нас из-за этого были небольшие нюансы. Но я вставил как здесь приведен файл обновления валют-через cron на сервере. У меня работает. т.е. проблема у меня решилась.

 

В посте выше сказано, что файл запускали через: /usr/local/php...... и т.д.

Я запускаю через curl.... Все вроде работает.

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


  • 6 years later...

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

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

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

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

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

Вхід

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

Вхід зараз

×
×
  • Створити...

Important Information

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