• Расскажите подробно про php://input, как пользоваться?

    @justpusher
    При консольном запуске PHP php://input представляет stdin, и с помощью него можно писать консольные команды, обрабатывающие ввод.
    Особенно удобно его использовать в сочетании с SplFileObject для построчного чтения.
    Ответ написан
    Комментировать
  • Как организовать свой порядок сортировки в YII2?

    @justpusher
    Обычно используют отдельное поле, order или position, и отдельно его заполняют. Если только средствами ORM - то только beforeSave/afterSave (мне больше нравится первое). Если можете написать свой запрос для сохранения - можете решить одним запросом INSERT с подзапросом.

    Если очень хотите средствами ORM и одним запросом - можете в поле order вставлять текущую дату-время с микросекундами. Но это извращение, я считаю. Нет ничего страшного в двух запросах.
    Ответ написан
    Комментировать
  • Как запретит браузерам открывать поддомены по https?

    @justpusher
    Возможно, у вас шлётся хедер Strict-Transport-Security с опцией subdomains? Тогда будет форсирована загрузка HTTPS даже поддоменов.
    Ответ написан
    Комментировать
  • Можно ли полагаться на HTTP-заголовки при определении размера удалённого файла?

    @justpusher
    Вопрос сводится к такому: всегда ли удалённый сервер шлёт правильный Content-Length? мы не можем быть в этом 100% уверены.

    Насколько я понимаю, вы хотите ограничить максимальный размер загружаемых картинок.
    Можно поступить так:
    1. Запрашиваете хедеры. Если Content-Length есть и больше, сразу отклоняете.
    2. Запрашиваете содержимое, контролируя размер получаемых данных. Как только получаете больше данных, чем ваш лимит - обрываете запрос и отклоняете. Вот пример.
    Ответ написан
    Комментировать
  • Возможно паралельное выполнение php?

    @justpusher
    Советую добавить подробное логирование в файл в нескольких местах вашего кода. Логируйте microtime, process id, идентификатор текущего запроса и значения переменных. Это поможет вам разобраться, что происходит.

    P.S. заголовок вопроса выбран крайне неудачно.
    Ответ написан
  • Какой тип мьютекса использовать?

    @justpusher
    Если все процессы на одном сервере - лучше использовать flock, он проще и надёжнее.
    Например, в случае рестарта mysql или потери соединения с ним по другой причине - вы теряете блокировку, полученную GET_LOCK, но можете про это и не узнать.
    Если же вам нужно получать блокировки на разных серверах, то GET_LOCK может выручить. Но внимательно ознакомьтесь с подводными камнями. Например, в старых версиях mysql повторный вызов GET_LOCK отменяет предыдущие блокировки, а в новых - получает новые блокировки параллельно.

    P.S. если вам блокировка нужна для выполнения простых действий в таблице, типа выборки нового задания для обработки, используйте SELECT FOR UPDATE.
    Ответ написан
  • Как запускать программу на Linux в контексте 1й сессии?

    @justpusher
    В указанной статье Selenium и Firefox намеренно запускаются в фоне (на самом деле в отдельной сессии :10), логично, что вы их не видите.
    Есть два способа сделать как вы хотите:
    1. Запускать Selenium в той же сессии, к которой вы подключаетесь по RDP - скорее всего это сессия :0
    Для этого замените :10 на :0 в строке export DISPLAY=:10
    Если вы подключились по SSH и хотите что-то запустить в сессии :0 - попробуйте тоже выполнить export DISPLAY=:0 после чего запускать нужную программу.
    2. Подключаться при необходимости к сессии :10
    У вас запускается vnc-сервер :10, значит, он будет слушать на localhost:5910. Вы можете подключиться любым VNC-клиентом, только вам скорее всего придётся пробросить порт 5910 удалённого компьютера к себе.
    Ответ написан
  • Почему при копировании файла результующий файл отличаеться одним байтом?

    @justpusher
    Рассмотрите ещё вариант, что вы от этого сайта получаете неправильную картинку при определённых условиях.
    Как проверить: сохраните эту картинку на своём сайте по такому же адресу, подмените айпишку с помощью /etc/hosts и запросите (уже со своего сайта).
    Ответ написан
    Комментировать
  • Как очистить error_get_last()?

    @justpusher
    В описании (вернее, в комментарие) функции error_get_last имеется в виду не совсем очистка, а скорее приведение к определённому, известному значению. Т.е. нужно будет изменить код и сравнивать возвращаемое error_get_last значение не с null, а с известным значением (что-то типа "Undefined variable: error_clear".

    В вашем случае советую поступить совсем по-другому. Перед вызовом установите set_error_handler на функцию, которая конвертирует все ошибки в исключения (пример есть здесь). После вызова нужной функции восстановите restore_error_handler. Если возникнет ошибка, будет брошено исключение. Словите его и примите меры.
    Ответ написан
    Комментировать
  • Настройка скина Opera Next

    @justpusher
    Кликнуть правой кнопкой мыши по красной кнопке → Настройка → Оформление. В появившемся окне будет выпадающий список после слова «Расположение». В нем выбрать значение «Скрыть».
    Этот способ убирает целиком субпанель перед вкладками, то есть все остальные кнопки, находящиеся левее вкладок, тоже спрячутся. Впрочем, по умолчанию там находится только та самая красная кнопка.

    Вернуть красную кнопку, спрятанную этим методом можно, кликнув правой кнопкой мыши на панели вкладок и выбрав в контекстном меню «Настройка» → «Сбросить настройки панели»."


    Кроме того, можно спрятать на кнопке меню текст, оставив только логотип.
    Ответ написан
    1 комментарий
  • Настройка скина Opera Next

    @justpusher
    Могу предложить другое решение проблемы: убрать кнопку совсем. Удалить саму кнопку нельзя, зато можно скрыть её панель (отдельная панель для этой кнопки).

    Это очень удобно, т.к. освобождается место для вкладок.
    Меню всегда можно открыть клавишей Alt.
    Ответ написан
  • Opera со временем начинает жутко тормозить

    @justpusher
    1) Опера очень чувствительна к фрагментации диска. Попробуйте провести дефрагментацию папок оперы (в program files, application data, local settings), можно прямо во время работы оперы. У меня это положительно сказывается на отзывчивости и скорости открытия-закрытия.
    2) Оцените, сколько у вас занимают рабочие папки оперы (в appdata и local settings). Если у вас выключены disk cache, mail, visited pages search, то их размер должен быть очень небольшим (до 100 мб). Если занимает много — повод насторожиться, определите, что много занимает.
    3) В папке Local Settings\Application Data\Opera\Opera\icons\ бывает настолько много иконок, что она открывается секунд 30. Я её чищу (можете попробовать, но сделайте бекап).
    4) Попробуйте отключить своп. Это в большинстве случаев ускоряет работу. Но главное следить, чтобы вы не превысили лимит памяти (иначе программы начнут просто вылетать).
    Ответ написан
    Комментировать