Обновление созданных pdf в PDFResource

Настроил PDFResource, pdf перегенерятся в файл при сохранении.
Но документ динамический и меняется не только при сохранении самого документа, но и при добавлении других документов. Тогда сгенеренная pdfка получается устаревшей.
Может есть какие-то настройки, позволяющие например раз в сутки пересоздавать pdf?
Андрей
09 июля 2018, 06:45
modx.pro
1 130
0

Комментарии: 6

Андрей
09 июля 2018, 12:12
0
Можно включить чтобы pdf генерился на лету — PDF generation on the fly.
    Андрей
    09 июля 2018, 12:54
    0
    Но тогда pdf будет генерится при каждом клике на ссылку. Что-то я побаиваюсь ботов, будут постоянно генерит pdf на лету и грузить сервер…
      Андрей
      09 июля 2018, 13:08
      0
      Делал несколько раз, проблем с ботами ни разу не было.

      Как вариант можно использовать — ExportPage, там есть пример скрипта для cron.
    Дмитрий Танцирев
    20 марта 2020, 02:12
    0
    Создаём файл resavepdf.php в корне сайта.

    Пишем в него следующее:

    <?php 
    	
    	ini_set('max_execution_time', 0);
    	ignore_user_abort(true);
    
    	define('MODX_API_MODE', true);
    	require_once 'index.php';
    
    	$offset = isset($_GET['offset']) ? htmlspecialchars($_GET['offset']) : 0;
    	$c = 'modResource';
    	$q = $modx->newQuery($c);
    	$q->where(array('template' => 13));
    	$q->limit(50,$offset);
    	$q->sortby('id');
    	$q->select(array("{$c}.*"));
    	$s = $q->prepare();
    	$s->execute();
    	$i = 0;
    	while($row = $s->fetch(2)){
    		$response = $modx->runProcessor('resource/update', $row);
    		if($response->isError()){
    			print_r($response->getResponse());
    			return;
    		}
    		$i++;
    	}
    
    	if($i){
    		$offset += 50;
    		header("Location: https://site.ru/resavepdf.php?offset=$offset");
    	}else{
    		echo "Готово.";
    	}
     ?>
    Запускаем.
      Сергей Шлоков
      20 марта 2020, 08:12
      +2
      Данное решение проигрывает связке PHP+Javascript. Уверен, Вы в курсе, что тайм лимит есть ещё у веб-сервера. И что при разрыве связи с клиентом (даже при включенном ignore_user_abort(true)) переадресация не сработает, как и любой вывод в браузер.

      htmlspecialchars($_GET['offset'])
      Тут можно только пожать плечами.
        Дмитрий Танцирев
        20 марта 2020, 08:35
        -3
        Господи, мужик, да что с тобой?
        И так понятно, что это решение не претендует на примию оскар. Оно было у меня в закромах, т.к. приходилось с такой же проблемой столкнуться. Накидал за полчаса… овнокода, выполнил задачу и забыл.
        Если упираемся в лимит времени, значит огрничиваем количество документов обратнных за раз (с 50 до 10 например).

        Выложите тогда своё решение, если диадема жмёт.
        Зачем этот срач на пустом месте?
        Ради рейтинга чтоль?
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6