OnYourLips: ну если надо n > 1 соединений и база спроектирована синглтоном - тут на помощь приходит фабрика синглтонов. Вот так например:
static private $instance = array();
private function __construct($name) {
switch ($name) {
//select db connection
}
$this->db = $this->getDb();
return;
}
protected function __clone() {
}
public static function singleton($name) {
if (!isset(self::$instance[$name])) {
$c = __CLASS__;
self::$instance[$name] = new $c($name);
}
return self::$instance[$name];
}
public function wrapperFunction() {
//stuff
}
А вообще - каждый вальсирует как хочет. Я лишь перечислил часто используемые паттерны для запрошенной тематики.
4ipS: ну я бы проксировал запросы через сервер, результат(то есть сами аудио-файлы) сохранял на жестком диске сервера, и завёл бы таблицу в бд, где было бы как минимум 2 поля - айди аудизоаписи в соц сети и путь к аудизаписи на жёстком диске сервера.
Но тут всё зависит от того, что именно вам нужно.
Banny_Boom: Вы не указываете тип параметра, php.net/manual/ru/pdo.constants.php, а по умолчанию, емнип, используется PDO::PARAM_STR, в результате ваш false, превращается в "false" и запрос выглядит так:
UPDATE public.users SET sex="false" WHERE login="login" , а false должен идти без кавычек. Попробуйте использовать так :
$statements = $connection->prepare("UPDATE public.users SET sex=:sex WHERE login=:login");
$statement->bindParam('login', $login, \PDO::PARAM_STR);
$statement->bindValue('sex', 0, \PDO::PARAM_BOOL); //bindValue тут, потому, что передаём значение, а не ссылку, для переменной можно использовать bindParam. По значениям - 0 => false, 1 => true
Вячеслав Беляев: Хранить данные, которые вы получаете через джоины с других таблиц,в искомой. Например в ankets.userCreated хранить не users.id а сразу users.name. Такой подход увеличивает расходы на запись\обновление но уменьшает их при чтении. Подробнее можете почитать тут habrahabr.ru/post/64524 например.
AlikDex: Да чёрт его знает, как правильно :) Раньше тоже постоянно думал как правильно\неправильно. Пока один хороший человек не вправил мне мозги, что все правильно идут лесом, если всё хорошо работает. Если у вас redis при одинаковых условиях ест меньше ресурсов - используйте его.
@iproger если у вас onboard gpu, то часть оперативки выделяется под видеопамять, про это тоже не стоит забывать. То есть ваши 400 мб не будут простаивать без дела. Ну а если хром кушает очень много памяти, проверьте расширения. Обычно в них и кроется прожорливость, так как качество кода некоторых дополнений оставляет желать лучшего. Просто кроме специфичного софта, не знаю какая необходимость может требовать x64 систему на <=4 гб памяти. Попробуйте ещё всякие оптимизаторы и чистильщики, может помогут.
@iproger насчёт Protoshares не знаю(таблицы железа и калькулятора для них нет), а насчёт Primecoin можно посмотреть xpmwiki.com/index.php?title=Hardware_comparison и на основе полученных значений Total chains per day воспользоваться калькулятором - anty.info/primecoin-calculator/. Например уже упомянутый мной AMD Opteron 3280 имеет значение 0.833 chains per day , и за сутки может добыть от 0.1 до 1 XPM(Primecoin) - как повезёт. Сейчас конечно курс XPM\BTC упал почти в два раза, поэтому я переключился на майнинг PTS(Protoshares). По поводу потребления электричества не знаю, так как в моём случае за него платит организация. Много денег таким майнингом не поднять, но 100$ в месяц на пиво - вполне реально.
static private $instance = array();
private function __construct($name) {
switch ($name) {
//select db connection
}
$this->db = $this->getDb();
return;
}
protected function __clone() {
}
public static function singleton($name) {
if (!isset(self::$instance[$name])) {
$c = __CLASS__;
self::$instance[$name] = new $c($name);
}
return self::$instance[$name];
}
public function wrapperFunction() {
//stuff
}
А вообще - каждый вальсирует как хочет. Я лишь перечислил часто используемые паттерны для запрошенной тематики.