//Подключаем функции работы с БД
/
@include_once("php/mysql.php");
//Подключаем функции работы с пользователем
include("php/fuser.php");
Почему экранируется подключение к базе?
Почему подключение к базе включается один раз, а файл работы с пользователем может быть включен неоднократно?
//Инициируем подключение к БД
_mysql_init();
//Инициируем получение данных о пользователе и сохранение их в массив
$current_user = _userdata();
Что произойдет, если пользователь неавторизован? Что вернет _userdata()? А если база недоступна?
И почему имя функции начинается с подчеркивания? Логичнее было бы назвать user_data()?
Но так как мы получаем данные пользователя, то правильнее было бы get_user_data()?
А если мы сохраняем данные пользователя, то save_user_data()?
А если мы создаем данные пользователя, то create_user_data()?
А если мы удаляем данные пользователя, то destroy_user_data()?
Видите сколько повторений?
А что такое данные пользователя? Это его свойства, верно? Имя, аватар, адрес.
Это все data пользователя user.
А get, save, create, destroy - это все действия, которые мы производим над данными data пользователя user.
Получается, наш пользователь, это объект, но мы заранее сделали все, чтобы задублировать все операции над ним используя процедурный стиль.
anton_reut: я скажу, что во ВКонтакте за последние 2 года не появилось значительных изменений в функционале. Это говорит о том, что каждое изменение обходится компании очень дорого.
Потом ВКонтакте это во многом legacy проект. Он был начат где-то в 2004-2005 годах, когда Дуров начал разрабатывать форум для кафедры. В те времена безраздельно властвовал PHP 4, в котором была весьма ограниченная поддержка ООП. PHP 5 появился только в середине 2004 года и особого доверия к нему у сообщества не было, т.к. было достаточно много багов. Даже я лично натыкался на один. Поэтому я совсем не удивлен, у меня самого на работе Drupal 7, который наполовину процедурный, а наполовину ООП.
Плюс, на мой взгляд ВК достаточно несложный проект, посещаемый, популярный, но не очень сложный. Любая современная EHR/EMR-система сложнее ВК на порядок.
По поводу затыков производительности я молчу. Вот я открываю исполнителя и треки играют через один. Я открываю Spotify, в нем все треки работают, в Бостоне, в Нью-Йорке, в Москве, в Ставрополе, в Мексике, в аэропорту, на компе, на телефоне, на айподе, даже на телевизоре. Тоже самое происходит с загрузкой фотографий, а про просмотр видео в ВК я вообще забыл. Не дай бог что-то перемотать.
А приколы "Сервер недоступен в данный момент". В 2017 году. Балансировка, обработка отказов, CDN.
Нет, мы жадные, пусть наши пользователи мучаются.
Я ВК почти перестал пользоваться, я чаще бываю на Фейсбук с его тормозным интерфейсом.
huwesu: задумайтесь, чем инициация соединения по HTTP отличается от классического сокетного соединения?
Плюс, если клиент будет находиться за проксей, то использование любого нестандартного метода коммуникации между клиентом и сервером вызовет кучу проблем.
Опять же стандартные протоколы обеспечат возможность легкого расширения системы и интеграции других составляющих. Например, если вдруг нужно будет написать какой-нибудь веб-индикатор с обновлением в режиме реального времени это займет один день, а с вашим подходом прийдется все делать заново с нуля.
sorax1: да, должна быть установлена на всех системах, участвующих в обмене данными.
Syncthing наверно не подойдет вам, поскольку вам нужна более простая синхронизация. Syncthing подойдет там, где надо поддержать синхронизацию между несколькими машинами. Например 3 машины, каждая из которых создает свои данные, но эти данные должны быть раскинуты на все 3 машины.
Вы можете использовать CDN перед второй VDS, например Cloudflare. Если у вас часто качают одно и тоже и оно относительно небольшое, то это снизит загрузку канала.
Также советую посмотреть в сторону https://webtorrent.io/ если много пользователей качают примерно одно и тоже. Поможет снизить загрузку канала и ускорить загрузку для многих пользователей.
Детали можно не покупать, их можно получить из старой техники самому. Сейчас люди выбрасывают очень много техники, поспрашивайте родню и друзей, у многих всегда есть что-то ненужное или забытое выбросить. Походите по округе, люди часто выбрасывают что-нибудь.
Для начала нужно купить 2 вещи: первая - паяльник (обычный 25-30 Вт), а затем мультиметр.
Почему экранируется подключение к базе?
Почему подключение к базе включается один раз, а файл работы с пользователем может быть включен неоднократно?
Что произойдет, если пользователь неавторизован? Что вернет _userdata()? А если база недоступна?
И почему имя функции начинается с подчеркивания? Логичнее было бы назвать user_data()?
Но так как мы получаем данные пользователя, то правильнее было бы get_user_data()?
А если мы сохраняем данные пользователя, то save_user_data()?
А если мы создаем данные пользователя, то create_user_data()?
А если мы удаляем данные пользователя, то destroy_user_data()?
Видите сколько повторений?
А что такое данные пользователя? Это его свойства, верно? Имя, аватар, адрес.
Это все data пользователя user.
А get, save, create, destroy - это все действия, которые мы производим над данными data пользователя user.
Получается, наш пользователь, это объект, но мы заранее сделали все, чтобы задублировать все операции над ним используя процедурный стиль.
Мы могли бы сделать так:
Уже все намного короче.
А вот так бы выглядело добавление в друзья Васей Пети:
Такое уродливое название для функции необходимо, чтобы можно было понять, кто кого добавляет в друзья.
Ваш код связан с недостатком опыта и страхом непонимания новых парадигм и концепций.