<![CDATA[ CRON или автозапуск снипета - My Forums]]> https://forums.modx.com/thread/?thread=60485 <![CDATA[Re: CRON &#1080;&#1083;&#1080; &#1072;&#1074;&#1090;&#1086;&#1079;&#1072;&#1087;&#1091;&#1089;&#1082; &#1089;&#1085;&#1080;&#1087;&#1077;&#1090;&#1072;]]> https://forums.modx.com/thread/60485/cron?page=2#dis-post-351380 http://modxcms.com/forums/index.php?topic=37286.20]]> amadeus71rus Dec 22, 2010, 12:59 AM https://forums.modx.com/thread/60485/cron?page=2#dis-post-351380 <![CDATA[Re: CRON &#1080;&#1083;&#1080; &#1072;&#1074;&#1090;&#1086;&#1079;&#1072;&#1087;&#1091;&#1089;&#1082; &#1089;&#1085;&#1080;&#1087;&#1077;&#1090;&#1072;]]> https://forums.modx.com/thread/60485/cron?page=2#dis-post-351379 amadeus71rus Dec 18, 2010, 10:20 AM https://forums.modx.com/thread/60485/cron?page=2#dis-post-351379 <![CDATA[Re: CRON &#1080;&#1083;&#1080; &#1072;&#1074;&#1090;&#1086;&#1079;&#1072;&#1087;&#1091;&#1089;&#1082; &#1089;&#1085;&#1080;&#1087;&#1077;&#1090;&#1072;]]> https://forums.modx.com/thread/60485/cron?page=2#dis-post-351378 Параметры вызова из адресной строки:
http://www.site.ru/cron/?cmd=start&snippet=test

где
cmd - [ start | stop ] start - запуск crona, stop - остановить
snippet - здесь нужно указать название сниппета

сниппет можно установить на страницу например
www.site.ru/cron/

вызов снипета будет таким:
[[cron]] - если без параметра
[[cron? &snippet=`test` &cmd=’start’]] - запуск crona для сниппета "test"

Код сниппета:


<?php
global $modx;
$cmd = $_GET[’cmd’];
$snippet = $_GET[’snippet’];
$ttime = 60; //время крона в секундах
set_time_limit("0"); //отключаем лимит выполнения скрипта
ini_set("max_execution_time", "0"); //тоже самое
ignore_user_abort(true); //включаем игнор на дисконект с пользователем

$file = "cron.pid"; //файл идентификации работы скрипта
//$files = "1.txt"; //просто так

if (file_exists($file)) {
print(’Скрипт запущен! И работает...

’);
if ($cmd == stop) {
print(’Остановили сниппет

’);
unlink(’cron.pid’);
exit(’вышли’);
}
}
else {
print(’Скрипт не запущен

Запускаем скрипт

’);
fopen($file,"w");

switch ($cmd)
{
case ’start’:
print(’запустили сниппет’);
while (file_exists($file)) {
//fopen($files,"w");
$modx->runSnippet($snippet);
sleep($ttime);
}
break;
}
}
?>]]>
ma1oy Jul 02, 2009, 06:46 AM https://forums.modx.com/thread/60485/cron?page=2#dis-post-351378
<![CDATA[Re: CRON &#1080;&#1083;&#1080; &#1072;&#1074;&#1090;&#1086;&#1079;&#1072;&#1087;&#1091;&#1089;&#1082; &#1089;&#1085;&#1080;&#1087;&#1077;&#1090;&#1072;]]> https://forums.modx.com/thread/60485/cron?page=2#dis-post-351377
<?php
$file = "cron.pid";
$cmd = $_GET['cmd'];
if (file_exists($file)) {
	print("Скрипт запущен! И работает...");
		if ($cmd == stop) {
		print("Остановили сниппет");
		unlink('cron.pid');  
		exit("вышли");
		}
}
else {
print("Скрипт не запущен <br> Запускаем скрипт");
fopen($file,"w");
@set_time_limit(0);
@ini_set("max_execution_time", 0);
@ignore_user_abort(1);
switch ($cmd)
{
    case 'start':			
		print("запустили сниппет");
		
    break;
}  
}
?>
]]>
ma1oy Jul 02, 2009, 04:11 AM https://forums.modx.com/thread/60485/cron?page=2#dis-post-351377
<![CDATA[Re: CRON &#1080;&#1083;&#1080; &#1072;&#1074;&#1090;&#1086;&#1079;&#1072;&#1087;&#1091;&#1089;&#1082; &#1089;&#1085;&#1080;&#1087;&#1077;&#1090;&#1072;]]> https://forums.modx.com/thread/60485/cron?page=2#dis-post-351376 ]]> ma1oy Jul 02, 2009, 03:39 AM https://forums.modx.com/thread/60485/cron?page=2#dis-post-351376 <![CDATA[Re: CRON &#1080;&#1083;&#1080; &#1072;&#1074;&#1090;&#1086;&#1079;&#1072;&#1087;&#1091;&#1089;&#1082; &#1089;&#1085;&#1080;&#1087;&#1077;&#1090;&#1072;]]> https://forums.modx.com/thread/60485/cron#dis-post-351375 Quote from: ma1oy at Jul 02, 2009, 08:18 AM

ignore_user_abort

Устанавливает, должно ли отсоединение клиента прерывать выполнение скрипта.
Попробуйте, может и получится что-то. Но нужно иметь ввиду, что у сервера скорее всего есть еще свои настройки максимального времени выполнения скриптов.]]>
suhinin Jul 02, 2009, 03:31 AM https://forums.modx.com/thread/60485/cron#dis-post-351375
<![CDATA[Re: CRON &#1080;&#1083;&#1080; &#1072;&#1074;&#1090;&#1086;&#1079;&#1072;&#1087;&#1091;&#1089;&#1082; &#1089;&#1085;&#1080;&#1087;&#1077;&#1090;&#1072;]]> https://forums.modx.com/thread/60485/cron#dis-post-351374 я просто начинающий программист, вот есть замечательная функция в PHP
ignore_user_abort

Устанавливает, должно ли отсоединение клиента прерывать выполнение скрипта.

С ее помощью можно написать собственный mini-cron для MOD’x, например для запуска сниппетов, что мне и нужно...
Управлять скриптом можно через запросы например ?cmd=start , ?cmd=stop и т.п.]]>
ma1oy Jul 02, 2009, 03:18 AM https://forums.modx.com/thread/60485/cron#dis-post-351374
<![CDATA[Re: CRON &#1080;&#1083;&#1080; &#1072;&#1074;&#1090;&#1086;&#1079;&#1072;&#1087;&#1091;&#1089;&#1082; &#1089;&#1085;&#1080;&#1087;&#1077;&#1090;&#1072;]]> https://forums.modx.com/thread/60485/cron#dis-post-351373 Quote from: ma1oy at Jul 02, 2009, 07:51 AM

выход же?
Да, это вариант, которым иногда пользуются, если некритичен тот факт, что пользователь будет находиться на сайте в момент его обновления. Иногда бывает так, что cron запускает мощные апдейты и в этот момент сайт "слегка" притормаживает smiley Кстати, загрузка из внешних источников (как в Вашем случае - XML файлы сторонних сайтов) - всегда геморройная и довольно длительная задача для сервера.]]>
suhinin Jul 02, 2009, 02:56 AM https://forums.modx.com/thread/60485/cron#dis-post-351373
<![CDATA[Re: CRON &#1080;&#1083;&#1080; &#1072;&#1074;&#1090;&#1086;&#1079;&#1072;&#1087;&#1091;&#1089;&#1082; &#1089;&#1085;&#1080;&#1087;&#1077;&#1090;&#1072;]]> https://forums.modx.com/thread/60485/cron#dis-post-351372 выход же?]]> ma1oy Jul 02, 2009, 02:51 AM https://forums.modx.com/thread/60485/cron#dis-post-351372 <![CDATA[Re: CRON &#1080;&#1083;&#1080; &#1072;&#1074;&#1090;&#1086;&#1079;&#1072;&#1087;&#1091;&#1089;&#1082; &#1089;&#1085;&#1080;&#1087;&#1077;&#1090;&#1072;]]> https://forums.modx.com/thread/60485/cron#dis-post-351371 Quote from: ma1oy at Jul 02, 2009, 07:36 AM

а не удобнее ли было из админки задать время обновления(срабатывания сниппета) в настройках модуля например? =)
Как Вы это себе представляете? Это задача сервера - внешнего или собственного, не важно - вызывать Ваш скрипт по расписанию. Можно даже заставить программу на Вашем компьютере запрашивать выполнение Вашего скрипта через определенный интервал. Но никак иначе.]]>
suhinin Jul 02, 2009, 02:41 AM https://forums.modx.com/thread/60485/cron#dis-post-351371