хотя как я понял ставите на чистое железо, странно. У меня была похожая проблема, когда на макбуке пытался запустить 14.04. А у вас какая версия, кстати?
@Sekira да, как вариант сгодится. А так вообще описанный мной способ применяется более широкого спектра задач, например для работы с платежами по API и таким образом можно избежать задвоения транзакций.
@Sekira а как вы будете решать вопрос с горизонтальным масштабированием, когда придется использовать другой обработчик сессии, например на memcached и локами на запись?
@opium полагаю всё же написание конструктора не сильно простая вещь, по крайней мере по javascript и верстке много работы. Но "не получается" это конечно мегаответ)))
@pacman667 наверное я не прав, просто привык, что всегда есть vps под рукой из-за пары-тройки проектов и поднять там еще 1 vhost не проблема. Но одно время до появления дешевых и полноценных vps я как раз использовал самосборный сервачок дома с 100мбит каналом в инет. Аптайм у провайдера был высокий, может 1-3 раза в год мелкие перебои происходили, а по энергозатратам я подсчитывал было около 180руб/месяц, а переплата за внешний IP 90 рублей, что все равно было круто, если сравнивать с VPS от hetzner за те же деньги. Работало отлично. Но потом появились предложения типа DigitalOcean и тут уже никаких шансов не осталось у домашнего хостинга)).
Кстати, я бы на вашем месте для ограничения доступа просто использовал http-авторизацию.
@m0Hze все зависит от конкретной задачи. Но допустим вы делаете классы для работы с кешем. Один для хранения в файлах, другой для memcached, третий для APC. Что их все объединяет? Один интерфейс. Допустим, что достаточно методов store и get.
Соответственно, использование кеша дальше можно делать через интерфейс. Например, пусть будет класс с методом делающий выборку статей для главной страницы сайта. Тогда можно используя DI-контейнер сперва с помощью фабричного метода установить конкретную реализацию кеша (скажем, исходя из параметров в конфигурационном файле), а далее в коде либо получать его напрямую, либо внедрять в методы или классы как интерфейс. Например:
class MainPage
{
.....
public function getRSSContent()
{
$cache = DI::get('cache');
$content = new FetchRSSFeed($cache);
}
}
class FetchRSSFeed
{
public function __construct(CacheInterface $cache)
{
....
if ($cache->read('something')) {
....
}
}
}