Обновление созданных pdf в PDFResource
Настроил PDFResource, pdf перегенерятся в файл при сохранении.
Но документ динамический и меняется не только при сохранении самого документа, но и при добавлении других документов. Тогда сгенеренная pdfка получается устаревшей.
Может есть какие-то настройки, позволяющие например раз в сутки пересоздавать pdf?
Но документ динамический и меняется не только при сохранении самого документа, но и при добавлении других документов. Тогда сгенеренная pdfка получается устаревшей.
Может есть какие-то настройки, позволяющие например раз в сутки пересоздавать pdf?
Комментарии: 6
Можно включить чтобы pdf генерился на лету — PDF generation on the fly.
Но тогда pdf будет генерится при каждом клике на ссылку. Что-то я побаиваюсь ботов, будут постоянно генерит pdf на лету и грузить сервер…
Делал несколько раз, проблем с ботами ни разу не было.
Как вариант можно использовать — ExportPage, там есть пример скрипта для cron.
Как вариант можно использовать — ExportPage, там есть пример скрипта для cron.
Создаём файл 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 "Готово.";
}
?>
Запускаем.
Данное решение проигрывает связке PHP+Javascript. Уверен, Вы в курсе, что тайм лимит есть ещё у веб-сервера. И что при разрыве связи с клиентом (даже при включенном ignore_user_abort(true)) переадресация не сработает, как и любой вывод в браузер.
htmlspecialchars($_GET['offset'])
Тут можно только пожать плечами.
Господи, мужик, да что с тобой?
И так понятно, что это решение не претендует на примию оскар. Оно было у меня в закромах, т.к. приходилось с такой же проблемой столкнуться. Накидал за полчаса… овнокода, выполнил задачу и забыл.
Если упираемся в лимит времени, значит огрничиваем количество документов обратнных за раз (с 50 до 10 например).
Выложите тогда своё решение, если диадема жмёт.
Зачем этот срач на пустом месте?
Ради рейтинга чтоль?
И так понятно, что это решение не претендует на примию оскар. Оно было у меня в закромах, т.к. приходилось с такой же проблемой столкнуться. Накидал за полчаса… овнокода, выполнил задачу и забыл.
Если упираемся в лимит времени, значит огрничиваем количество документов обратнных за раз (с 50 до 10 например).
Выложите тогда своё решение, если диадема жмёт.
Зачем этот срач на пустом месте?
Ради рейтинга чтоль?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.