Чтение RSS каналов

Форум

Открыть Ответить

CRON + SLAED DB

0

0
1
21.07.2017 13:15:0021.07.2017 13:17:37
Добрый день.
Вопрос наверное в первую очередь к разработчику SLAED (ну если кто то уже реализовывал подобное прошу поделится).

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

Вообщем на сервер в папку uploads будут подгружаться .csv списки которые нужно обрабатывать и абдейтить базу.

Вопрос непосредственно по PHP скрипту-обработчику, что нужно в нем дополнительно прописать и что инклюдить, что бы можно было не изобретать велосипед, а использовать стандартный СЛЕДовский конектор к базе и связанные с базой функции.

что бы в результате можно было написать функцию с запросом вида:

1function ABC() {
2global $db, $conf;
3....
4....
5$db->sql_query("UPDATE ....... SET state='active', record_date='".date("Y-m-d H:i:s")."' WHERE id_doc='".$doc."'");
6....
7}


ну как я понимаю инклюдить config.php и db.php в лоб не получится в сторонний .php из за защиты? что нужно прописать что бы это было возможно?


Версия системы: SLAED CMS 6.* Pro
Версия PHP: 7
Сервер: Сервер в интернете

Внимание анекдот ©: что точно изменят в новой версии SLAED ?
- форум станет еще уже Смайл - 06
3

3
2
22.07.2017 22:03:5322.07.2017 22:17:48
Есть несколько вариантов запуска сторонних скриптов или функций.

Вариант 1

Один из них, прописать функцию или класс в ядро системы через панель управления, отдел "Редактор внедрений". Будет использоваться файл внедрения в ядро системы: config/config_function.php

Если на сервере нет CRONа или подключение к нему проблематично, можно воспользоваться системным планировщиком задач который работает в фоновом режиме, файл: function/function.php функция: head()

В версии 6.2 Pro это реализовано таким образом
01$cron = 0;
02    if ($confs['log_d']) {
03        $sess_f = "config/counter/dump.txt";
04        $sess_d = (file_exists($sess_f) && filesize($sess_f) != 0) ? file_get_contents($sess_f) : 0;
05        $past = $ctime - intval($confs['sess_d']);
06        if ($sess_d < $past) {
07            $head = preg_replace("#<body(.*?)>#si", "<body OnLoad=\"AjaxLoad('GET', '0', 'filereport', 'go=3&amp;op=filereport', ''); return false;\"$1>", $head);
08            $cron = 1;
09        } else {
10            $cron = 0;
11        }
12    }
13    if ($confs['log_b'] && !$cron) {
14        $sess_f = "config/counter/backup.txt";
15        $sess_b = (file_exists($sess_f) && filesize($sess_f) != 0) ? file_get_contents($sess_f) : 0;
16        $past = $ctime - intval($confs['sess_b']);
17        if ($sess_b < $past) {
18            $head = preg_replace("#<body(.*?)>#si", "<body OnLoad=\"AjaxLoad('GET', '0', 'backup', 'go=3&amp;op=backup', ''); return false;\"$1>", $head);
19            $cron = 1;
20        } else {
21            $cron = 0;
22        }
23    }
24    include("config/config_sitemap.php");
25    if ($confma['auto'] && !$cron) {
26        $sess_f = "sitemap.xml";
27        $sess_b = (file_exists($sess_f) && filesize($sess_f) != 0) ? filemtime($sess_f) : 0;
28        $past = $ctime - intval($confma['auto_t']);
29        if ($sess_b < $past) {
30            $head = preg_replace("#<body(.*?)>#si", "<body OnLoad=\"AjaxLoad('GET', '0', 'sitemap', 'go=3&amp;op=sitemap', ''); return false;\"$1>", $head);
31            $cron = 1;
32        } else {
33            $cron = 0;
34        }
35    }
36    if ($conf['newsletter'] && !$cron) {
37        $head = preg_replace("#<body(.*?)>#si", "<body OnLoad=\"AjaxLoad('GET', '0', 'newsletter', 'go=3&amp;op=newsletter', ''); return false;\"$1>", $head);
38    }

Данный код можно видоизменить и дополнить своим кодом подключения задач.

Вариант 2

Для быстрого подключения библиотек используемых в системе, в сторонних скриптах/файлах, базы данных в том числе, достаточно в начале вашего скрипта указать: define("FUNC_FILE", true);

Далее подключаем и используем всё что предлагает ядро, к примеру:

include("config/config.php");
include("function/db.php");


и т.д.

Обратите внимание на правильную запись путей к скриптам. В варианте примера выше учитывается случай когда ваш скрипт лежит в главной/основной директории проекта.

Немного отходя от темы, напомню, что сторонние файлы, если это необходимо, можно закрыть/защитить средствами системы. В качестве примера, добавим данный участок в верную часть кода вашего файла.
1# Start protect from direct access
2define('ADMIN_FILE', true);
3define('FUNC_FILE', true);
4# Relative path from file
5$path = '../../';
6include($path.'core/authenticate.php');
7# End

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

Идеи и предложения
Обратная связь