Я считаю, что нужно использовать в каждом php-проекте, где нужна хотя бы одна зависимость или это библиотека. Он решает проблему версионирования, подключения классов и даже поиска нужного пакета
Я тоже предпочитаю знать, что я включаю в проект и как оно работает. Поэтому я буду подключать всё через composer, и пользоваться общепринятыми стандартами или библиотеками, которые этот стандарт поддерживают.
PSR-2 помогает сделать код более читабельным, а так же другим людям позволяет сразу же понят, как правильно писать (табы, пробелы, фигурные скобки, прочее)
PSR-4 помогает сделать структуру, в которой не нужно использовать в каждом файле include.
Composer помогает подключать библиотеки стандартно с помощью одной команды, и больше не думать как подключать каждую из библиотек
PHPUnit — признанный инструмент для написания unit-тестов. Я видел, что у вас тоже есть тесты, но они не стандартизированы, а значит ни одна система сборки их не сможет прогнать без доработки напильником.
Единственное от чего можно отказаться это от GrumPHP, но он мне очень нравится, т.к. проверяет код перед комитом (на стандарты, запускает тесты и прочее)
$model = Torrents::findOne(['forum_id' => $data[0], 'topic_id' => $data[2]]); убрать за цикл и сделать полный фетч. Причем лучше без AR, массив должен состоять из ключей forum_id + '_' + topic_id, и значений true, например
или просто сделайте уникальный ключ на forum_id + topic_id, а в insert добавьте ключик IGNORE
В основном цикле заменяете if($model !== null) continue; на if (isset($exists[$data[0] . '_' . $data[2]])) continue;
После этого выкидываем вставку через AR и делаем опять же через DAO, причем вне цикла делаете prepare, а в цикле просто байндите значения.
Мой индексатор индексирует за 200 секунд в 4 потока. Правда я не использую mysql вообще, всё сделано с помощью sphinx'а и его xmlpipe2. Правда пока я не доделал выдергивание категорий/подкатегорий. Может на досуге доделаю, чтобы формировал php-массив и далее его нужно будет просто инклудить в код. Я считаю, что mysql для этого избыточна.
Сатис работает на php в кроне, а отдаёт статику nginx'ом, никаких заморотов, зато полное версионирование ваших пакетов. Если нужно будет поставить предыдущию версию, она всегда будет в сатис.
Прямо в репозитории хранить нельзя, т.к. это лишний код в репозитории, который по факту не нужен. Если очень хочется, можете попробовать хранить как сабмодуль, но это тоже идея не самая хорошая.
Хранить нельзя. Чтобы зафиксировать версии, вам нужно хранить composer.lock в репозитории.
Если вы боитесь, что будут недоступны какие-то проекты и пакеты, воспользуйтесь проксированием packagist.org с помощью разных систем, например Satis
Единственное от чего можно отказаться это от GrumPHP, но он мне очень нравится, т.к. проверяет код перед комитом (на стандарты, запускает тесты и прочее)
$model = Torrents::findOne(['forum_id' => $data[0], 'topic_id' => $data[2]]);
убрать за цикл и сделать полный фетч. Причем лучше без AR, массив должен состоять из ключей forum_id + '_' + topic_id, и значений true, напримерили просто сделайте уникальный ключ на forum_id + topic_id, а в insert добавьте ключик
IGNORE
В основном цикле заменяете
if($model !== null) continue;
наif (isset($exists[$data[0] . '_' . $data[2]])) continue;
нужно заменить на
count($data) > 1
, и проверятьif (!array_key_exists(6, $data)) { $data[6] = 0 }
Бывает, что у некоторых топиков не бывает даты.Мой индексатор индексирует за 200 секунд в 4 потока. Правда я не использую mysql вообще, всё сделано с помощью sphinx'а и его xmlpipe2. Правда пока я не доделал выдергивание категорий/подкатегорий. Может на досуге доделаю, чтобы формировал php-массив и далее его нужно будет просто инклудить в код. Я считаю, что mysql для этого избыточна.
Прямо в репозитории хранить нельзя, т.к. это лишний код в репозитории, который по факту не нужен. Если очень хочется, можете попробовать хранить как сабмодуль, но это тоже идея не самая хорошая.
Если вы боитесь, что будут недоступны какие-то проекты и пакеты, воспользуйтесь проксированием packagist.org с помощью разных систем, например Satis