в общем есть скрипт который берет курсы валют и пишет их инфоблок каждый день в 5 утра скрипт ниже
[B]вопрос 1ый[/B]
если раскомментить
//define("LANG", "ru");
//$_SERVER["DOCUMENT_ROOT"] = "/home/r/ТУТЛОГИН";
выдается ошибка Class 'CModule' not found in
важно ли это?
[B]вопрос 2ой[/B]
как закрыть скрипт от прямого вызова? если вызвать скрипт через строку браузера он автоматически добавить элемент инфоблока?
[B]вопрос 3ий[/B]
и самый важный почему не выполняется через крон???? предполагаю решение в первом вопросе.
-----------------
хостинг sweb
"1С-Битрикс: Управление сайтом 15.5.1"
редакция -Старт
задание для крона каждый день в 5 утра
[CODE]/usr/bin/php5.3 /home/r/ТУТЛОГИН/ПАПКАСАЙТА/public_html/include_area/curs.php[/CODE]
скрипт
[CODE]
#!/usr/bin/php
<?php
//$_SERVER["DOCUMENT_ROOT"] = "/home/r/ТУТЛОГИН";
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
set_time_limit(60);
//define("LANG", "ru");
include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
// Получаем текущие курсы валют в rss-формате с сайта www.cbr.ru
$content = get_content();
// Разбираем содержимое, при помощи регулярных выражений
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $content, $out, PREG_SET_ORDER);
$dollar = "";
$euro = "";
foreach($out as $cur)
{
if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]);
if($cur[2] == 978) $euro = str_replace(",",".",$cur[4]);
}
//echo "$ - ".$dollar."<br>";
// echo "EUR - ".$euro."<br>";
global $APPLICATION;
CModule::IncludeModule('iblock');
// if(CModule::IncludeModule('iblock')){
$el = new CIBlockElement;
$arLoadProductArray = array(
'IBLOCK_ID' => 33,
'ACTIVE_FROM' => date('d.m.Y H:i:s'),
'NAME' => "Курс на ".date('d.m.Y'),
'PROPERTY_VALUES' => array(
'USD' => $dollar,
'EUR' => $euro,
)
);
$PRODUCT_ID = $el->Add($arLoadProductArray);
// }
function get_content()
{
// Формируем сегодняшнюю дату
$date = date("d/m/Y");
// Формируем ссылку
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
// Загружаем HTML-страницу
$fd = fopen($link, "r");
$text="";
if (!$fd) echo "Запрашиваемая страница не найдена";
else
{
// Чтение содержимого файла в переменную $text
while (!feof ($fd)) $text .= fgets($fd, 4096);
}
// Закрыть открытый файловый дескриптор
fclose ($fd);
return $text;
}
include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>
[/CODE]
[B]вопрос 1ый[/B]
если раскомментить
//define("LANG", "ru");
//$_SERVER["DOCUMENT_ROOT"] = "/home/r/ТУТЛОГИН";
выдается ошибка Class 'CModule' not found in
важно ли это?
[B]вопрос 2ой[/B]
как закрыть скрипт от прямого вызова? если вызвать скрипт через строку браузера он автоматически добавить элемент инфоблока?
[B]вопрос 3ий[/B]
и самый важный почему не выполняется через крон???? предполагаю решение в первом вопросе.
-----------------
хостинг sweb
"1С-Битрикс: Управление сайтом 15.5.1"
редакция -Старт
задание для крона каждый день в 5 утра
[CODE]/usr/bin/php5.3 /home/r/ТУТЛОГИН/ПАПКАСАЙТА/public_html/include_area/curs.php[/CODE]
скрипт
[CODE]
#!/usr/bin/php
<?php
//$_SERVER["DOCUMENT_ROOT"] = "/home/r/ТУТЛОГИН";
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
set_time_limit(60);
//define("LANG", "ru");
include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
// Получаем текущие курсы валют в rss-формате с сайта www.cbr.ru
$content = get_content();
// Разбираем содержимое, при помощи регулярных выражений
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $content, $out, PREG_SET_ORDER);
$dollar = "";
$euro = "";
foreach($out as $cur)
{
if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]);
if($cur[2] == 978) $euro = str_replace(",",".",$cur[4]);
}
//echo "$ - ".$dollar."<br>";
// echo "EUR - ".$euro."<br>";
global $APPLICATION;
CModule::IncludeModule('iblock');
// if(CModule::IncludeModule('iblock')){
$el = new CIBlockElement;
$arLoadProductArray = array(
'IBLOCK_ID' => 33,
'ACTIVE_FROM' => date('d.m.Y H:i:s'),
'NAME' => "Курс на ".date('d.m.Y'),
'PROPERTY_VALUES' => array(
'USD' => $dollar,
'EUR' => $euro,
)
);
$PRODUCT_ID = $el->Add($arLoadProductArray);
// }
function get_content()
{
// Формируем сегодняшнюю дату
$date = date("d/m/Y");
// Формируем ссылку
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
// Загружаем HTML-страницу
$fd = fopen($link, "r");
$text="";
if (!$fd) echo "Запрашиваемая страница не найдена";
else
{
// Чтение содержимого файла в переменную $text
while (!feof ($fd)) $text .= fgets($fd, 4096);
}
// Закрыть открытый файловый дескриптор
fclose ($fd);
return $text;
}
include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>
[/CODE]