1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-16 14:50:48 +03:00

Задачи в крон - очистка старого кеша и рассылка емайлов

This commit is contained in:
Mzhelskiy Maxim 2014-08-17 16:12:50 +07:00
parent 9b4388fa76
commit 3fdba1318b
5 changed files with 38 additions and 99 deletions

View file

@ -128,7 +128,15 @@ class ModuleTools extends Module {
}
return $sText;
}
/**
* Отдает файл на загрузку в браузер пользователя
*
* @param $sFilePath
* @param $sFileName
* @param null $iFileSize
*
* @return bool
*/
public function DownloadFile($sFilePath,$sFileName,$iFileSize=null) {
if (file_exists($sFilePath) and $file=fopen($sFilePath,"r")) {
header("Content-Type: application/octet-stream");
@ -145,4 +153,26 @@ class ModuleTools extends Module {
}
return false;
}
/**
* Запускает задачу рассылки емайлов (отложенная отправка)
*/
public function SystemTaskNotify() {
$aNotifyTasks = $this->Notify_GetTasksDelayed(Config::Get('module.notify.per_process'));
if(!$aNotifyTasks) {
return 'empty';
}
/**
* Последовательно загружаем задания
*/
$aArrayId=array();
foreach ($aNotifyTasks as $oTask) {
$this->Notify_SendTask($oTask);
$aArrayId[]=$oTask->getTaskId();
}
/**
* Удаляем отработанные задания
*/
$this->Notify_DeleteTaskByArrayId($aArrayId);
return "Send notify: ".count($aArrayId);
}
}

View file

@ -627,4 +627,9 @@ CREATE TABLE IF NOT EXISTS `prefix_cron_task` (
KEY `plugin` (`plugin`),
KEY `method` (`method`(255)),
KEY `period_run` (`period_run`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 17.08.2014
INSERT INTO `prefix_cron_task` (`id`, `title`, `method`, `plugin`, `state`, `count_run`, `period_run`, `date_create`, `date_run_last`) VALUES (NULL, 'Отложенная отправка емайлов', 'Tools_SystemTaskNotify', '', '1', '0', '2', '2014-08-17 00:00:00', NULL);
INSERT INTO `prefix_cron_task` (`id`, `title`, `method`, `plugin`, `state`, `count_run`, `period_run`, `date_create`, `date_run_last`) VALUES (NULL, 'Удаление старого кеша данных', 'Cache_ClearOldCache', '', '1', '0', '1500', '2014-08-17 00:00:00', NULL);

View file

@ -1,53 +0,0 @@
<?php
/*-------------------------------------------------------
*
* LiveStreet Engine Social Networking
* Copyright © 2008 Mzhelskiy Maxim
*
*--------------------------------------------------------
*
* Official site: www.livestreet.ru
* Contact e-mail: rus.engine@gmail.com
*
* GNU General Public License, version 2:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
---------------------------------------------------------
*/
require_once(dirname(dirname(dirname(__DIR__))).'/bootstrap/start.php');
class CronNotify extends Cron {
/**
* Выбираем пул заданий и рассылаем по ним e-mail
*/
public function Client() {
$aNotifyTasks = $this->Notify_GetTasksDelayed(Config::Get('module.notify.per_process'));
if(empty($aNotifyTasks)) {
$this->Log("No tasks are found.");
return;
}
/**
* Последовательно загружаем задания на публикацию
*/
$aArrayId=array();
foreach ($aNotifyTasks as $oTask) {
$this->Notify_SendTask($oTask);
$aArrayId[]=$oTask->getTaskId();
}
$this->Log("Send notify: ".count($aArrayId));
/**
* Удаляем отработанные задания
*/
$this->Notify_DeleteTaskByArrayId($aArrayId);
}
}
$sLockFilePath=Config::Get('sys.cache.dir').'CronNotify.lock';
/**
* Создаем объект крон-процесса,
* передавая параметром путь к лок-файлу
*/
$app=new CronNotify($sLockFilePath);
print $app->Exec();

View file

@ -1,43 +0,0 @@
<?php
/*-------------------------------------------------------
*
* LiveStreet Engine Social Networking
* Copyright © 2008 Mzhelskiy Maxim
*
*--------------------------------------------------------
*
* Official site: www.livestreet.ru
* Contact e-mail: rus.engine@gmail.com
*
* GNU General Public License, version 2:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
---------------------------------------------------------
*/
require_once(dirname(dirname(dirname(__DIR__))).'/bootstrap/start.php');
class CronTemplateCacheClean extends Cron {
/**
* Находим все кеш-файлы js и css и удаляем их с сервера
*/
public function Client() {
/**
* Выбираем все файлы кеша
*/
$aFiles = glob(Config::Get('path.smarty.cache'). DIRECTORY_SEPARATOR ."*\*.{css,js}", GLOB_BRACE);
if (!$aFiles) $aFiles=array();
$this->Log("Cache files count: ".count($aFiles));
foreach ($aFiles as $sFilePath) {
@unlink($sFilePath);
}
}
}
/**
* Создаем объект крон-процесса
*/
$app=new CronTemplateCacheClean();
print $app->Exec();

@ -1 +1 @@
Subproject commit 5f4f0fc412f26ee1725e16260404ff9ef03c9f70
Subproject commit 9c87dad040c61d82c05d46a336561fff0d163eb6