Ответы пользователя по тегу Apache HTTP Server
  • CMS для высокой нагрузки?

    @kaasius
    Если знать, что такое nginx proxy_cache - то абсолютно не важно, какая у вас будет CMS.
    Ну, и как говорилось выше, 14К - это очень небольшая нагрузка. Саппорчу сайт с 1М уников, работает на машинке 8core/8gb, la выше 2-3 не подымается даже в пике. CMS правда самописная.
    Ответ написан
    Комментировать
  • Установка Apache - что выбрать?

    @kaasius
    itk основан на prefork, позволяет запускать каждый vhost от своего пользователя (что позволяет изолировать сайты по правам доступа к файлам). Не позволяет использовать php в режиме fcgi (а оно надо? Для этого есть nginx).

    Короче, вы почитайте документацию. Там много полезного есть.
    Ответ написан
    Комментировать
  • Связка Nginx+Apache. Странное поведение virtual hosts - почему?

    @kaasius
    Попробуйте отдебажить ситуацию - вкрутите в энджи логирование запросов для этого server и посмотрите, попадает ли туда ваш субдомен.
    Ответ написан
    Комментировать
  • Какой Windows-хостинг с apache использовать?

    @kaasius
    Это потому что зачем?
    В смысле - ну какой смысл использовать на винде апач?
    Ну и - да, кто мешает, купив сервер, поставит туда то, что нужно? Или вы говорите о виндовом шаред-хостинге? Тогда лучше вам забыть про это.
    Ответ написан
    Комментировать
  • Почему при загрузке страницы отображается пустая страница PHP?

    @kaasius
    Смотрите ошибки в логах апача. Какой код ошибки возвращает сервер при пустой странице? Вангую 500 - в этом случае в логе должно появиться сообщение об ошибке.
    Ответ написан
    1 комментарий
  • Как средствами PHP защититься от накрутки кол-ва загрузок файла?

    @kaasius
    А файло отдается как?
    Исходя из предположения, что с одного ip нет большого смысла скачивать файл более одного раза, то ограничивающий фактор будет ip. Далее делаем так:
    На фронт nginx, и делаем локейшн, в котором лежат файлы.
    location ^~ /user_files { # Это где реально лежат файлы
            internal;
            root /path/to/folder;
    }
    location ^~ /userfiles { # Это то, куда указывают ссылки на сайте
            proxy_pass  http://127.0.0.1:80;
    }


    Обрабатываете локейшн /userfiles в php и отдаете заголовки X-Accel-Redirect, чтобы статику отдавал энджи.

    Дальше, как считать.

    Если стоит memcache - делаем add($fileid.$ip,1) - если ключ уже установлен, add вернет false, и счетчик увеличивать не надо, если не установлен - надо увеличить счетчик. Ключ при этом установится. Счетчик увеличиваем соответственно так: inc("counter/".$fileid,1)

    Если стоит redis - все очень похоже. Делаем setnx($fileid.$ip,1) - если ключ установлен, вернет false. Если нет - ключ установится. Счетчик увеличиваем incr("counter/".$fileid,1). Но redis так же может помочь сильно сэкономить память. Для этого надо использовать не строки, а хеши. То есть стейт храним как hsetnx($fileid,$ip,1). А счетчик в этом случае храним как hincrby("counters",$fileid,1). Это даст перед мемкешем следующие преимущества:
    1. Драматическая экономия памяти. Хеши c короткими ключами и значениями весьма эффективно расходуют память.
    2. Сайд-эффект - очень просто посмотреть, с каких ip загружали файл - hgetall($fileid). Если еще немного модифицировать алгоритм так: hincrby($fileid,$ip,1) - будем получать на выходе целое значение - количество закачек с этого ip - так можно попалить накрутчиков и просто банить их по ip.
    3. Сайд-эффект - очень просто получить таблицу всех счетчиков файлов - hgetall("counters").

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

    Если ограничивать по пользователям (кукам), что на мой взгляд не очень, то все делается ровно так же, только вместо ip используем id, который записан в сессии. Тогда использовать хеши для хранения состояния не удачная мысль - надо хранить в строках, и ставить им expire - время жизни сессии, или, там, сутки - как угодно.
    Ответ написан
    1 комментарий
  • Как средствами php посчитать количество просмотров изображения?

    @kaasius
    nginx+X-Accel-Redirect
    Алсо, апач его тоже умеет.
    Ответ написан
    Комментировать