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

Форум

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

CRON + SLAED DB

0

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

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

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

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

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

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


ну как я понимаю инклюдить 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 это реализовано таким образом
$cron = 0;
	if ($confs['log_d']) {
		$sess_f = "config/counter/dump.txt";
		$sess_d = (file_exists($sess_f) && filesize($sess_f) != 0) ? file_get_contents($sess_f) : 0;
		$past = $ctime - intval($confs['sess_d']);
		if ($sess_d < $past) {
			$head = preg_replace("#<body(.*?)>#si", "<body OnLoad=\"AjaxLoad('GET', '0', 'filereport', 'go=3&amp;op=filereport', ''); return false;\"$1>", $head);
			$cron = 1;
		} else {
			$cron = 0;
		}
	}
	if ($confs['log_b'] && !$cron) {
		$sess_f = "config/counter/backup.txt";
		$sess_b = (file_exists($sess_f) && filesize($sess_f) != 0) ? file_get_contents($sess_f) : 0;
		$past = $ctime - intval($confs['sess_b']);
		if ($sess_b < $past) {
			$head = preg_replace("#<body(.*?)>#si", "<body OnLoad=\"AjaxLoad('GET', '0', 'backup', 'go=3&amp;op=backup', ''); return false;\"$1>", $head);
			$cron = 1;
		} else {
			$cron = 0;
		}
	}
	include("config/config_sitemap.php");
	if ($confma['auto'] && !$cron) {
		$sess_f = "sitemap.xml";
		$sess_b = (file_exists($sess_f) && filesize($sess_f) != 0) ? filemtime($sess_f) : 0;
		$past = $ctime - intval($confma['auto_t']);
		if ($sess_b < $past) {
			$head = preg_replace("#<body(.*?)>#si", "<body OnLoad=\"AjaxLoad('GET', '0', 'sitemap', 'go=3&amp;op=sitemap', ''); return false;\"$1>", $head);
			$cron = 1;
		} else {
			$cron = 0;
		}
	}
	if ($conf['newsletter'] && !$cron) {
		$head = preg_replace("#<body(.*?)>#si", "<body OnLoad=\"AjaxLoad('GET', '0', 'newsletter', 'go=3&amp;op=newsletter', ''); return false;\"$1>", $head);
	}

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

Вариант 2

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

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

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


и т.д.

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

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

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

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

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь