Ответы пользователя по тегу PHP
  • Почему на хостинге запись всего лишь 1 значения (Timestamp) в БД MySQL работает быстрее, чем в файл, хотя у меня на компе быстрее файл?

    @iamFake
    Вы рассматриваете вопрос записи данных на диск слишком узко.

    Запись одного значения в файл не будет особо отличаться от записи одного значения в таблицу приведённую вами в пример. Да, субд имеют свой оверхед, но современные субд очень сильно оптимизированы и в данном случае разница значительной не будет.

    Но, эту разницу могут делать значительной иные факторы... Например вы вызвали file_put_contents, которая обратилась к вашей ФС и сказала (образно говоря разумеется :) ) "запиши это вот сюда" и ФС ответила "ОК", file_put_contents вернула успех и пхп продолжил выполнение кода.

    Только вот если ФС сказала "ОК" - это еще не означает, что данные были физически записаны на диск... Данные могут еще довольно существенное время (вплоть до сотен милисекунд) находится в кэше ФС и лишь после быть "сброшены" на диск. А вот современные субд, заботясь о целостности данных как правило после ответа фс "ОК" - отдают еще команду синхронизации, принудительно заставляя ФС скинуть данные на диск и только после этого, возвращают вам успешный ответ... От сюда, в пределах вашего примера, незначительная разница в скорости, с вашей точки зрения - может стать значительной...

    Что касается вопроса про хостера, причин тоже может быть не мало... База может находится на SSD диске или RAID массиве (0 или 01 например)... Может быть разница в приоритете работы с диском (ionice) и прочие административные ограничения хостера, дабы клиент не "положил" сервак бешенным IO к диску.

    Да, у хостеров БД часто на другом сервере находится. Таким образом оборудование чётко разделяется на зоны применения и каждая зона настраивается максимально под узкие задачи, что приводит к значительному упрощению администрирования и приличному росту производительности. А так же росту оверхеда если общение через TCP протокол.
    Ответ написан
    5 комментариев
  • Как для каждого сайта назначить свой PHP.INI или изменить его параметры через NGINX?

    @iamFake
    в конфиге php-fpm для конкретного хоста пишем:

    php_admin_value[mbstring.func_overload] = 2
    php_admin_value[mbstring.internal_encoding] = UTF-8

    в итоге получится что-то вроде:
    [some-host.tld]
    listen = ...
    ...
    php_admin_value[mbstring.func_overload] = 2
    php_admin_value[mbstring.internal_encoding] = UTF-8
    Ответ написан
    Комментировать