Оцените код и помогите найти недочёты plz

KorP

Новичок
Что ж, возможно некий публичный разбор полётов это и лучше.
Сразу оговорюсь, несмотря на то что я на этом форуме уже 6-й год, с php я работал очень мало и знания на уровне новичка находятся.
Задача была простой: написать мониторинг торрент трекеров (определённых). Знаю что есть уже готовы решения, например тот же torrentwatch(-x), написанный на том же php, но т.к. это универсальная система - свои минусы у неё есть, а с php я знаком не на том уровне, что бы пытаться допилить то что там уже сделано, по этому решил написать с 0, благо ничего сложного в этом я особо не заметил. фронт-энд меня сейчас не сильно волнует, по этому о нём сейчас говорить не буду, интересует только "движок".

основная часть -> http://pastebin.com/B6HgQAAK
набор функций к ней -> http://pastebin.com/L5ABWSjh
конфиги и прочее не привожу, смысла в них не вижу

по поводу как работает - в базе содержатся названия/id торрентов, указание трекера, качество сериала и дата обновления. моя фигулька работает в двух режимах:
- мониторинг тем с обновляемыми раздачами - персит указанную тему, смотрит время регистрации торрента, если оно отличается от того что есть в базе - качает торрент
- поиск раздач - парсит рсс в поисках нужного названия, когда находит, проверяет есть ли уже этот торрент и если нет - перекачивает

собственно всё не просто, а очень просто

из того что вижу сам:
1. избавится от file_get_contents() и перейти на CURL
2. понатыкать "отбоев" на случай если не удалось распарсить страницу/рсс - сервер не доступен, форум отключён, не подходят учётные данные (ну и соответственно при этом тогда не видно дату регистрации торрента и сам торрент)

заранее благодарен
 

Adelf

Administrator
Команда форума
тебе про ООП узнать. Прям напрашивается.
 

Духовность™

Продвинутый новичок
PHP:
курсы
человек, ты что всё время пытаешься купить знания за деньги? То гуру тебе подавай платного, то курсы.. САМ учись. Статьи читай. Книги по рефакторингу купи/скачай и читай.

$query = "UPDATE `torrent` SET `timestamp` = '{$date}' WHERE `id` = '{$id}'";
почему не экранируешь данные? http://phpfaq.ru/slashes

учись работать без global

mysql_query($query) or die(mysql_error());
узнай про исключения и забудь о die()

ну и стандарт кодирования у тебя какой-то кривой. код пляшет. отступы как будто пьяный человек расставлял. то 4 пробела отступ, то 8.
 

KorP

Новичок
человек, ты что всё время пытаешься купить знания за деньги?
а что в этом плохого, простите?

почему не экранируешь данные? http://phpfaq.ru/slashes
у меня почему то сложилось мнение, что этим следует заниматься, если мы работаем с данными, вводимыми пользователем, считал что в данном случае это не нужно

учись работать без global
с радостью, если вы ещё подскажите в какую сторогу гуглить, буду благодарен, мне другие способы работы с глобальными переменными в функциях не известны (ну кроме передачи её как параметра функции)

узнай про исключения и забудь о die()
благодарю, почитаю

ну и стандарт кодирования у тебя какой-то кривой. код пляшет. отступы как будто пьяный человек расставлял. то 4 пробела отступ, то 8.
если честно - не понял о чём идёт речь. пробелы не считал, в зависимости от вложенности - 1, 2, 3...10 табуляций

пс спасибо!
 

Духовность™

Продвинутый новичок
а что в этом плохого, простите?
знания нельзя купить.
у меня почему то сложилось мнение, что этим следует заниматься, если мы работаем с данными, вводимыми пользователем, считал что в данном случае это не нужно
привыкай всегда к хорошему. используй классы для БД, которые сами занимаются автоматической подстановкой. mysqli например, расширение вроде такое умеет.
с радостью, если вы ещё подскажите в какую сторогу гуглить
http://www.helloworld.ru/texts/comp/other/oop/ch01.htm
если честно - не понял о чём идёт речь
о том, что ты то 1 табуляцию делаешь, то 2 и код пляет
 

KorP

Новичок
знания нельзя купить.
знаия купить нельзя, я на это и не рассчитываю, но получать знания за деньги - другое дело. у нас в стране 80% высшего образования исключительно за деньги. я не считаю что если я плачу деньги, то я гуру стану. я выбираю лишь получения знаний за деньги, а не за бесплатно, по этому не вижу в этом ничего плохого.

привыкай всегда к хорошему. используй классы для БД, которые сами занимаются автоматической подстановкой. mysqli например, расширение вроде такое умеет.
http://www.helloworld.ru/texts/comp/other/oop/ch01.htm
благодарю, почитаю

о том, что ты то 1 табуляцию делаешь, то 2 и код пляет
количество табуляций зависит от вложенности. может быть просто покажете на примере? я не очень понимаю о чём вы говорите. страктуру стараюсь выдерживать
 

Духовность™

Продвинутый новичок
у нас в стране 80% высшего образования исключительно за деньги
Я тебе о другом - знания ты должен примерить на себе, познать на практике, осознать их, почувствовать. Платить деньги за курсы смысла нет - там тебя ничему не научат отличному от того, что есть в любой книжке.

может быть просто покажете на примере?
сейчас этот код нормально выглядит, а в pastebin он глючил, ибо там табуляция:
PHP:
function get_date($date) {
	$date = preg_split("/\s|\-/", $date); // тут 1 табуляция 
    
    switch ($date[1]) { // тут пробелы
		case 1: $m='Янв'; break; // 2 табуляции
		case 2: $m='Фев'; break;
		case 3: $m='Мар'; break;
		case 4: $m='Апр'; break;
		case 5: $m='Мая'; break;
		case 6: $m='Июн'; break;
		case 7: $m='Июл'; break;
		case 8: $m='Авг'; break;
		case 9: $m='Сен'; break;
		case 10: $m='Окт'; break;
		case 11: $m='Ноя'; break;
		case 12: $m='Дек'; break;
	}
	return $date[0].' '.$m.' '.$date[2].' '.$date[3];
}
я бы пробелами рекомендовал везде и всегда пользоваться. табуляция везде по разному выглядит в редакторах
 

KorP

Новичок
Я тебе о другом - знания ты должен примерить на себе, познать на практике, осознать их, почувствовать.
естетственно, вот по этому сам себе и придумываю задачи и стараюсь их реализовать, потом пытаюсь понять что и как нужно и можно улучшить и т.д.

Платить деньги за курсы смысла нет - там тебя ничему не научат отличному от того, что есть в любой книжке.
согласен, но. я лично пытался читать книжку по ООП, у меня возникает слишком много вопросов, можно конечно гуглить, читать статьи, писать на форумах и даже возможно найти на этой ответы, но на это потребуется больше времени, да и не все и не всегда захотят просто так помогать - всё-таки любой человеческий труд должен оплачиваться. Ну а преподаватель на курсах не отвертится от ответа на вопрос - это его работа, за которую он получает деньги. Да эта тема яркий тому пример - не очень много желающих как я посмотрю разбирать мои каракули, ну а за деньги и энтузиазма будет больше. Да взять тот же global. Есть у меня человек, к которому я порой обращаюсь за советом, ну и на вопрос - как можно использовать глобальные переменные в функции он мне ответил что логичнее всего использовать global. Конечно один человек проигрывает коллективному разуму форума, но вероятность получить ответ в некоторых случаях гораздо выше. Я курсы в принципе рассматриваю не как источник знаний, т.к. после курсов всё-равно придётся читать, т.к. полный объём по теме всё-равно не дадут, но по крайней мере мне доходчиво разжуют основы, до той степени, что бы я начал понимать то что не могу понять читая книжку, и что бы дальше я уже действительно мог самостоятельно углубляться в эту тему.

я бы пробелами рекомендовал везде и всегда пользоваться. табуляция везде по разному выглядит в редакторах
если честно - впервые сталкиваюсь с проблемой с табуляцией, хотя со своим кодом работал в разных редакторах на разных платформах. буду иметь ввиду, спасибо!
 

Фанат

oncle terrible
Команда форума
Сверху