Комментарии 40
Поиск работает шустро и все действительно просто я понятно. Не могу сказать, что «зеркало раздач» это до конца верное название, ведь это просто поиск. Если трекер перестанет работать то и многие раздачи просто растеряют сидов через какое-то время.
Эх, проходят года, а на PHP можно написать все так-же, как когда-то.
Эх, проходят года, а на PHP можно написать все так-же, как когда-то.
0
mysql_connect("localhost", "torrent", "password") or die("Could not connect to MySQL");
Время остановилось. Шел 2015 год. В репозиториях лежал PHP7. А на самом посещаемом IT ресурсе рунета продолжали писать mysql_connect и делать из кода лапшу.
+23
просто статья лежала на модерации лет 5
+13
Я запускаю много сайтов на различных серверах и нигде не встречал PHP7. Конечно, может быть мои сервера старые.
0
mysql_connect в статусе deprecated начиная с версии PHP 5.5, если мне память не изменяет. Актуальная версия пятой ветки PHP 5.6. Не заметить предупреждения можно только если везде ставить error_reporting(0), что при разработке/тестах очень странно. Или вы из принципа используете устаревшие функции в надежде на то, что ни один из ваших серверов никогда не обновится до актуальной версии?
+1
# apt-cache search php5 | wc -l
100
# apt-cache search php6 | wc -l
0
# apt-cache search php7 | wc -l
0
Debian Stable.
100
# apt-cache search php6 | wc -l
0
# apt-cache search php7 | wc -l
0
Debian Stable.
-2
Автор, а Вы в курсе, что расширение mysql и функции mysql_* deprecated c версии 5.5 и будут удалены в 7?
+4
Ну, можно еще добавить, что Sphinx давно не требует специальных библиотек, а позволяет запрашивать данные по MySQL интерфейсу. Да, некоторый функционал через него пару лет назад не работал (сложная агрегация), но то, что у автора в коде, работало уже тогда.
Но вообще, больше всего меня порадовал вот этот момент
36 файлов. Таймаут в скрипте установлен на 3 минуты/файл. Итого, больше 1.5 часов перед монитором, вручную перебирая цифры. У меня ощущение, что автор не дошел до главы, где объясняют, как в PHP можно получить список файлов в директории, поэтому списал этот момент на «усложнение кода».
Но вообще, больше всего меня порадовал вот этот момент
Открываем браузер, открываем url «http://site.ru/db/insert_to_db.php?f=category_10.csv». Проделываем тоже самое с каждым файлом CSV. Да, все это можно было автоматизировать, но я специально написал так, что бы было максимально всё понятно.
36 файлов. Таймаут в скрипте установлен на 3 минуты/файл. Итого, больше 1.5 часов перед монитором, вручную перебирая цифры. У меня ощущение, что автор не дошел до главы, где объясняют, как в PHP можно получить список файлов в директории, поэтому списал этот момент на «усложнение кода».
+2
В некоторых случаях оптимальней идти напролом, нежели придумывать элегантные решения. Я к таким случаям отношу однократную установку или настройку. Безусловно автор мог создать академический вылизанный код, однократно выполняемый при установке, но посчитал это лишней тратой времени.
-1
Причём здесь «академичность»? Мне кажется, тут есть смысл говорить не об академичности, а о банальном знакомстве автора с возможностями выбранных инструментов. Или вы считаете, что тратить 1.5 часа собственного времени на заполнение базы в полуавтоматическом режиме это нормально? При том, что можно это автоматизировать буквально тремя строчками кода. Не двумястами, не пятьюстами, а тремя. Единственный вариант, когда такое может быть оправдано, это если 1.5 часа твоего времени стоят меньше, чем набор трёх строк кода.
+4
О том, что можно запустить несколько параллельных потоков
http://site.ru/db/insert_to_db.php?f=category_*.csv
в разных окнах/табах, не подумал?-2
А зачем эти сложности? За 10 минут можно такой скрипт накатать:
Его можно дополнительно адаптировать к запуску из web (добавив set_time_limit и заменив PHP_EOL на <br>) — секунд за 20 это можно сделать. А так, он уже готов из консоли работать.
<?php
function println($message) {
echo $message, PHP_EOL;
}
mb_internal_encoding('UTF-8');
$db = new PDO('mysql:host=localhost;port=3306;dbname=torrent;charset=utf8', 'torrent', 'password', [
PDO::ATTR_PERSISTENT => 1,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => 0,
]);
foreach (glob('csv_data/*.csv') as $file) {
$fp = fopen($file, 'r');
if (!is_resource($fp)) {
println("Can't open $file");
continue;
}
$counter = 0;
while (($data = fgetcsv($fp, 0, ';')) !== false) {
if (count($data) == 0 && is_null($data[0])) {
continue;
}
$db->prepare('INSERT INTO `torrents` (`name`,`hash`,`date`,`size`,`topic_id`,`cat_id`,`cat_name`) VALUES (?,?,?,?,?,?,?)')->execute([$data[4], $data[3], $data[6], $data[5], $data[2], $data[0], $data[1]]);
$counter++;
}
println("Processed $counter entries from $file");
fclose($fp);
}
println('Done');
Его можно дополнительно адаптировать к запуску из web (добавив set_time_limit и заменив PHP_EOL на <br>) — секунд за 20 это можно сделать. А так, он уже готов из консоли работать.
+1
Опять же, в MySQL можно напрямую загружать CSV-файлы — вообще тогда никаких скриптов не нужно писать.
0
К сожалению не понимаю математики про 1.5 часа, таймаут не равен времени исполнения, плюс можно запустить несколько параллельных потоков.
А в реальной жизни бывает так что три строчки кода стоят дороже полного рабочего дня.
А в реальной жизни бывает так что три строчки кода стоят дороже полного рабочего дня.
0
Автоматизировать и обвешивать плюшками можно до бесконечности.
В этом случае статья заняла бы много экранов, а читатели начали бы зевать уже на файле insert_to_db.php.
Гораздо важнее изложить базовые принципы, пожертовав лишними и отвлекающими внимание плюшками — с чем автор вполне нормально справился (держи пять!).
Кому не хватает автоматического обхода листинга директории — тот сам себе напишет; и ни к чему это тащить сюда, где выжимки самого главного.
з.ы. set_time_limit() лишь ограничивает время исполнения, а не устанавливает его в. Так что, скрипт может выполниться и за 10 секунд, если файл небольшой.
В этом случае статья заняла бы много экранов, а читатели начали бы зевать уже на файле insert_to_db.php.
Гораздо важнее изложить базовые принципы, пожертовав лишними и отвлекающими внимание плюшками — с чем автор вполне нормально справился (держи пять!).
Кому не хватает автоматического обхода листинга директории — тот сам себе напишет; и ни к чему это тащить сюда, где выжимки самого главного.
з.ы. set_time_limit() лишь ограничивает время исполнения, а не устанавливает его в. Так что, скрипт может выполниться и за 10 секунд, если файл небольшой.
+1
можно сообразить про
curl http://site.ru/db/insert_to_db.php?f=category_{1..36}.csv
+1
Я же написал «все это можно было автоматизировать, но я специально написал так, что бы было максимально всё понятно». Или Вы решили проигнорировать это предложение?
0
а чего там поменялось с mysql?
зы не троль, просто непонятно
зы не троль, просто непонятно
0
А как сделать чтобы обновлялось каждый час с RuTracker? Раз в месяц обновления — это очень редко.
0
Просьба. Автор, залейте код на гитхаб и дайте людям оформить баги/предложения/пуллреквесты.
+1
VCS усложняют разработку. ZIP — выбор настоящих программистов! Просите архив, потом выложите ссылку на архив со своими правками, там, глядишь, еще кто подтянется.
+2
Модератор зачем-то удалил ссылку на сайт-пример, не понятно для чего это было сделано. Нарушений правил нету. Попробую оставить её снова. Ведь на рабочем примере будет более понятно, как все работает: rutracker.online
0
Вот из-за такого кода и насмеиваються над PHP
Подключение в БД копипастом в 3-х разных файлах…
В трех Карл!!!
Зачем использовать mysql_connect, когда все давно используют PDO, он и не диприкейтед и безопасней в использовании?!
Ну а про выборку из базы прямо среди HTML кода, я пожалуй просто промолчу.
Подключение в БД копипастом в 3-х разных файлах…
В трех Карл!!!
Зачем использовать mysql_connect, когда все давно используют PDO, он и не диприкейтед и безопасней в использовании?!
Ну а про выборку из базы прямо среди HTML кода, я пожалуй просто промолчу.
+2
Главная страница на чистом HTML, без использования PHP
Тогда зачем файлу расширение php?
Глянул пример реализации. По запросу «terminator» 951 результат, по «terminator 1991» — 18642. Гениально.
+1
Столько критики, а за восемь лет никто правильную статью не написал, между тем последний дамп Рутрекера 11 дней назад выложен. Зато все знают, как надо.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как запустить собственный торрент-поисковик на базе RuTracker?