Ответы пользователя по тегу PHP
  • Сайт, способный выдержать высокую нагрузку (?)

    @zuborg
    Хочу сразу все сделать правильно
    Все хотят, да вот ни у кого не получается ;)

    стоит ли тогда заморачиваться с выбором базы данных?
    Разумеется, хранить надо в отдельной базе данных, можно и файловой. А то когда захочется шаблон html-ки поменять, будет не смешно.

    Казалось бы, что может быть проще и легковеснее, чем отдавать статичные .html файлы
    Собственно, ничего, поэтому для незалогиненых пользователей, которые генерируют 90% трафика, стоит использовать именно статичные .html файлы. Запросы пользователей, которым надо генерить индивидуальные странички, надо направлять на движок в обход кеша (например, по факту наличия соотв сесионной куки).

    Где лучше хранить кэш с .html документами?
    в соотв. documentroot, чтобы nginx мог их легко найти и отдать, прямо по запрашиваемому урлу. Крайне желательно поддерживать некоторую вложенность папок, чтобы в каждой папке было максимум несколько тысяч файлов или других папок.

    Или может все хранить в тех же файлах?
    Все нельзя. Только то что редко обновляется и долго остается валидным. Для короткоживущих данных лучше использовать все-таки memcached, во избежание лишней нагрузки на диск. Либо FS в памяти, если уж хочется работы с файлами. Для короткоживущих данных в php есть замечательное средство кеширования — pecl модуль APC (основное его предназначение opcode cacher, но данные он тоже может кешировать)

    У работы с файловым кешем свои тонкости. Например, данные в нем менять надо атомарно, т.е. через временный файл и последующий rename(). Также желательно использовать блокировки чтобы избежать ситуации, когда несколько запросов паралельно начинают генерировать один и тот же элемент кеша. Часто нет необходимости немедленно перегенерировать элемент кеша при обновлении данных, достаточно его удалить, а генерация произойдет при запросе.
    Ответ написан
    Комментировать
  • Php5-fpm и nginx — ни в какую не хочет работать?

    @zuborg
    Пропишите проксирование на tcp-сокет (а не на unix-сокет) и посмотрите сниффером трафик, будете точно знать какой запрос шлет nginx и какой ответ возвращает php:
    tcpdump -nAs 20000 -i lo0 tcp port 9000
    Ответ написан
    1 комментарий