Пошаговая работа скрипта в Console
11 декабря 2014, 10:46
<?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' => $resource->context_key, '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";
Путен памаги!Илья помоги! Последний штрих так сказать остался. Сейчас вернулся к этой теме, ну не обновляет оно и все тут. Операция завершается, но данные не перезаписывает. Голову сломал, не могу подобрать «ключик»Нужно выполнить импорт страниц. В прошлом году программист помогал, а теперь он куда-то исчез. Оставил вот такую инструкцию:
Нужно выполнить в консоли данную команду убедившись что там код раскомментирован и убрана точка останова (exit)
php -f plugins/c_import.php
Консоль смог запустить, а вот как выполнить команду сообразить не могу. Далек от программирования. Поможете? =)