Вопрос

Консоль в движке (счетчик статей/постов), как обновить?

Обратил внимание, что счетчик статей/постов по теме нужно обязательно обновлять в админке, иначе не считает. Возможно нужен крон, или я что-то упустил?

7 Комментариев

  1. Да, это вылетело с обновлениями. Спасибо, добавил 👍

    На GitHub изменения внесены, вот команда которая нужна будет:

    php console default-task all

    console — это файл в корне сайта.

    К нему соотв. необходимо надо будет указать путь (везде разный). По времени исполнять поставить раз в сутки.

    P.S. я ещё протестирую в эти выходные, в следующем релизе (по ошибкам который) это будет. Планирую на следующей недели 0.9.2 будет.

    Пост изменил на вопрос. Тут необходим заголовок т.к. для поиска он нужен. Посты ущербные в этом плане. 😄

  1. Команду бы назвать более говорящим названием, по действию.

  1. Да, можно поменять. Например, какое название?

  1. Сделал бы вот так, это позволило бы выбирать, когда что удобнее обновлять. Или всё целиком.

    <?php
    
    declare(strict_types=1);
    
    namespace App\Commands;
    
    use Hleb\Base\Task;
    
    use Modules\Admin\Controllers\ConsoleController;
    
    /** php console refresh-data {arg} **/
    class RefreshData extends Task
    {
        /**
         * Resource regeneration and data update.
         */
        protected function run(string $arg): int
        {
            match ($arg) {
                'topics' => ConsoleController::topic(),
                'posts' => ConsoleController::post(),
                'up' => ConsoleController::up(),
                'tl' => ConsoleController::tl(),
                'all' => ConsoleController::all(),
                default => throw new \InvalidArgumentException('Wrong argument: ' . $arg)
            };
    
            return self::SUCCESS_CODE;
        }
    }

    Чтобы запускать задание на сервере вручную нужно определить где находится исполняемый файл php и указать путь до текущего проекта. Если PHP установлен в /usr/bin/php, то команда для запуска с обновлением всех данных:

    /usr/bin/php /path/to/project/console refresh-data all

    Если только темы нужно обновить:

    /usr/bin/php /path/to/project/console refresh-data topics

    Чтобы запускать через cron:

    0 3 * * * /usr/bin/php /path/to/project/console refresh-data all

    — запускать задачу ежедневно в 3:00 утра

    PS Про запуск и крон я дописал для тех, кто этого не знает.

    + Ну то есть я бы сделал вот так, в методах ConsoleController есть уже такое разделение, а там кому как удобно. Более подробное описание как это работает …

    + PPS Вижу, что если нужно поправить ссылку, то редактирование недоступно сразу, так как сообщение добавилось к предыдущему… а оно вышло за срок редактирования. Можно было бы предыдущему изменить срок, но это весь принцип ограничений сбивает. Возможно, что можно придумать решение. Пока даю просто ссылку https://hleb2framework.ru/ru/2/0/console/command

  1. О! Отлично, переделаю тогда. А по поводу редактирования, надо изменить время, сделать его более длительным. Спасибо 👍

  1. Есть еще такая идея, чтобы не добавлять к предыдущему, если срок его редактирования вышел. Это будет и визуально разделение сообщений написанных сразу и с значительным интервалом.

  1. Да, так сделать логичней. ➕