Master255: Просто у торрентов есть такая штука webseed, это когда в торрент файл прописывается прямой урл файла, и http сервер выступает как бы постоянным сидером. Возможно, стоит это использовать.
Денис Сыроежкин: Эти нехорошие люди удалили ффмпег из репа.
Реально пришлось бомжеваться по интернетам, вот что я нашел (проверил на 14.04 64бита на digitalocean)
sudo add-apt-repository ppa:djcj/vlc-stable
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ffmpeg
Денис Сыроежкин: вы в ./configure не указали ничего, поэтому получили голый ффмпег.
Меня сейчас опять закидают шапками, но собирать из исходников это не очень хорошая идея. Попробуйте через apt-get
Rsa97: Ну сначала же задачи выбираются, а потом связанные с ними сущности. А так да, атомарность, это конечно, тот еще геморой, ограничивается выбором фактора для шардинга.
Ну тут речь не об этом, а о том, что правильно разные сущности доставать отдельными запросами.
Dremkin: Да, прикинь, а еще кеш использую и, о боже, несколько баз данных (горизонтальное масштабирование). И джоины там ну никак ни але.
А на курсах начальников вы только попец лизать научитесь без реальной практики.
ponich: говорю же все равно 3 запроса
<?php
// получить все задачи (ПЕРВЫЙ ЗАПРОС)
$tasks = $this->db->get('task', $limit, $offset)->result_array();
// сюда сложим юзеров
$users = [];
// сюда сложим статусы
$statuses = [];
foreach ($tasks as $task) {
// автор задачи
$users[$task['author_user_id']] = null;
// кому адрессована задачи
$users[$task['performer_user_id']] = null;
// статус задачи
$statuses[$task['status']] = null;
}
if ($users) {
// получить всех нужных юзеров (ВТОРОЙ ЗАПРОС)
// $rows = select * from user WHERE id IN( implode(',', array_keys($users)) )
foreach ($rows as $row) {
$users[$row['id']] = $row;
}
}
if ($statuses) {
// получить все нужные статусы (ТРЕТИЙ ЗАПРОС)
// $rows = select * from task_status WHERE id IN( implode(',', array_keys(statuses)) )
foreach ($rows as $row) {
$statuses[$row['id']] = $row;
}
}
ponich: Вот ответ на вопрос, но это очень плохое решение
SELECT * from task
LEFT JOIN user author_user ON author_user.id = task.author_user_id
LEFT JOIN user performer_user ON performer_user.id = task.performer_user_id
LEFT JOIN task_status ON task_status.id = task.status
ponich: Все равно будет 3 запроса.
1 - достали задачи ( select * from task)
2- достали юзеров (select * from user where id IN(1,2,3,4) )
3 - достали статусы (select * from status)
ну и привинтили данные