Новый комментарий

FirstLast 26.10.2021 в 18:54

в коде на тест генерации времени страницы в index.php пропущено определение переменной $endTime:```
<?php
$startTime = microtime(true);

// тут весь остальной код
$endTime = microtime(true);
printf('<div style="text-align: center; padding: 5px">Время генерации страницы: %f</div>', $endTime - $startTime );

Mediaphag 11.01.2022 в 21:42

Если статьи или любые другие сущности удаляются вручную (или программно) то в последовательности id появляются дыры.
И соответственно пагинация будет работать некорректно на некоторых страницах.
Для сохранения последовательности id необходимо использовать "мягкое удаление". Создаем столбец deleted_at, которое будет хранить или дату удаления или NULL.
Можно делать нормализацию id (сдвиг) при удалении статьи или других строк. Но есть существенный минус — id статьи может быть присутствовать в другой таблице. И таким образом мы сломаем связь.
Универсального и подходящего всем решения нет.

Drozdetskij 14.05.2022 в 21:53

Запускаем его командой:

php create_many_articles.php

И идём пить кофе. После завершения работы скрипта заходим на главную страницу нашего блога http://myproject.loc/

Можно так и тогда, разве что только по маленькому сбегать успеем

create_many_articles.php

<?php

spl_autoload_register(function (string $className) {
   require_once __DIR__.'/src/'.str_replace('\\', '/', $className).'.php'; 
});

$db = \MyProject\Services\Db::getInstance();

$values = '';

for ($i=1; $i <= 1000000; $i++){

    $values .= sprintf(
        '(1, \'%s\', \'%s\'),',
        'Статья #'.$i,
        'Текст статьи '.$i,  
    );

    if ($i % 1000 === 0) {
        $db->query('INSERT INTO articles (`author_id`, `name`, `text`) VALUES '.rtrim ($values,',').';');
        $values = '';
        echo $i . PHP_EOL;
    }

}
ivashkevich 17.05.2022 в 13:33

Отличный вариант оптимизации!

Логические задачи с собеседований