Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Cron

00 голосов
6
Здравствуйте.
Как битрикс скрипты запустить через крон.
Ведь все они используют переменные окружения веб сервера Apach
----
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
---

а в кроне то такие вещи как $_SERVER["DOCUMENT_ROOT"] недоступны.
Что делать ?
спросил 13 Окт, 13 от Kania (5,180 баллов)

6 Ответы

00 голосов
Вот типичный код скрипта, запускаемого из-под cron:

Код
#!/usr/bin/php
<?php
$_SERVER["DOCUMENT_ROOT"] = "/home/hosting/www";
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
set_time_limit(0);
define("LANG", "ru");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

//ваш код...

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>
ответил 02 Ноя, 13 от Ixie (540 баллов)
00 голосов
Цитата
Vadim Dumbravanu пишет:
Вот типичный код скрипта, запускаемого из-под cron:

Несколько старая тема, но все же уточню:
Назовем файл, с выше описанным кодом testcron.php
Где он должен лежать на сайте, чтобы его можно было запустить через CRON?
ответил 07 Фев, 14 от Aythis (740 баллов)
00 голосов
Например в папке в корне сайта /testcron/
ответил 28 Май, 14 от Ritsu (260 баллов)
00 голосов
Цитата
Константин Кожевин пишет:
Например в папке в корне сайта /testcron/

Вот спасибо, но снова вопрос: а если этот файл во время работы инклудит файлы из админчасти - как быть?!
т.е.:
Код
<?php 
$_SERVER["DOCUMENT_ROOT"] = "/home/hosting/www"; 
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"]; 
define("NO_KEEP_STATISTIC", true); 
define("NOT_CHECK_PERMISSIONS", true); 
set_time_limit(0); 
define("LANG", "ru"); 
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules­/main/include/prolog_before.php"); 

//ваш код... 
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/мой_модуль/admin/parse_xml.php");


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules­/main/include/epilog_after.php"); 
?> 


в тоже время файл $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/мой_модуль/admin/parse_xml.php" - инклудит внутренние файлы из админчасти...
Вот как правильнее это организовать? с точки зрения и работы и безопасности?
Может в cron-исполняемый файл просто перенести содержимое файла из админчасти: parse_xml.php?
ответил 24 Сен, 14 от Aythis (740 баллов)
00 голосов
здравствуйте
после работы моего скрипта в логе я вижу (http://fgshop.ru/hers.log)
код скрипта:
Код
<?
$_SERVER["DOCUMENT_ROOT"] = "/www/fgshop/www/htdocs/";
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
define("LANG", "ru"); 
require_once("/www/fgshop/www/htdocs/bitrix/modules/main/include/prolog_before.php");
define('LOG_FILENAME', '/www/fgshop/www/htdocs/rememberLog.txt');
set_time_limit(0);
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $USER;
if(!is_object($USER)){
   $USER = new CUser;
}

if(CModule::IncludeModule('iblock') && CModule::IncludeModule("sale") && CModule::IncludeModule("catalog")){   
         // my code
}
AddMessage2Log($reportLog, ''); 
require_once("/www/fgshop/www/htdocs/bitrix/modules/main/include/epilog_after.php"); 
?>

подскажите в чём дело
ответил 28 Янв, 15 от Willow (300 баллов)
00 голосов
господа специалисты, отзовитесь.
защифровано зенд фрамеворком, и я не представляю в чём ошибка.
такой лог выдаёт, даже если просто оставить
Код
require_once("/www/fgshop/www/htdocs/bitrix/modules/main/includ­e/prolog_before.php"); 
ответил 12 Май, 15 от Willow (300 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 15 Апр, 14 от BlakCat (280 баллов)
0 голосов
3 ответов
спросил 26 Фев, 14 от Sekis (180 баллов)
0 голосов
2 ответов
спросил 06 Фев, 14 от xARCHx (240 баллов)
0 голосов
4 ответов
спросил 30 Янв, 14 от CCCPKinG (440 баллов)