Наверх

Пошаговая работа скрипта в Console

<?php
// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
    $_SESSION['console_offset'] = 0;
}
$offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;
// Формируем запрос
$q = $modx->newQuery('modResource');
$total = $modx->getCount('modResource', $q);
// Пропускаем все уже обработанные объекты
$q->limit($step, $offset);
$resources = $modx->getCollection('modResource', $q);
// Обработка
foreach ($resources as $resource) {
    print "<p>Processing resource <b>".$resource->get('pagetitle')."</b></p>";
    sleep(0.5);
}
// Меняем offset
$_SESSION['console_offset'] = $offset + $step;
if ($_SESSION['console_offset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['console_offset']);
} else {
  $sucsess = round($_SESSION['console_offset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
$current = isset($_SESSION['console_offset']) ?
           $_SESSION['console_offset'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";

Отправить все письма Sendex

<?php
$modx->addPackage('sendex', MODX_CORE_PATH . 'components/sendex/model/');
// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
    $_SESSION['console_offset'] = 0;
}
// Формируем запрос
$q = $modx->newQuery('sxQueue');
$total = $modx->getCount('sxQueue', $q);
// Пропускаем все уже обработанные объекты
$q->limit($step);
$resources = $modx->getCollection('sxQueue', $q);
// Обработка
foreach ($resources as $email) {
    print $email->email_to;
    $email->send();
}
// Меняем offset
if ($total == 0) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
} else {
  $_SESSION['Console']['completed'] = false;
}
print "\n";
print $total."\n\n";

Обновление всех URL сайта


<?php
// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
    $_SESSION['console_offset1'] = 0;
}
$offset = isset($_SESSION['console_offset1']) && $_SESSION['console_offset1'] ? $_SESSION['console_offset1'] : 0;
// Формируем запрос
$q = $modx->newQuery('modResource');
$total = $modx->getCount('modResource', $q);
print $total.', '.$step.', '.$offset.'
';
// Пропускаем все уже обработанные объекты
$q->limit($step, $offset);
$resources = $modx->getCollection('modResource', $q);
// Обработка
foreach ($resources as $resource) {
    print "<p>Processing resource <b>".$resource->get('pagetitle')."</b></p>";
    $response = $modx->runProcessor('resource/update', array('id' => $resource->id, 'context_key' => 'web', 'alias' => $resource->cleanAlias($resource->get('pagetitle'))));
    if ($response->isError()) {
        print_r($modx->error->failure($response->getMessage()));
        $modx->error->reset();
    }
    
    $id = $response->response['object']['id'];
}
// Меняем offset
$_SESSION['console_offset1'] = $offset + $step;
if ($_SESSION['console_offset1'] >= $total) {
  print '
complete';
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['console_offset1']);
} else {
  print '
not complete';
  $sucsess = round($_SESSION['console_offset1'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
$current = isset($_SESSION['console_offset1']) ?
           $_SESSION['console_offset1'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";


0 комментариев

    Авторизация

    через сервис Loginza:

    Подписка или RSS

    Буду присылать новые статьи — никакого спама



    Шаблоны MODX

    1 2 Дальше »

    Объектная
    модель
    MODX