Еще обратите внимание что в самом локейшн можно поменять root, изменить пришедший урл и пр. т.е. не обязательно урл должен быть равен 100% части пути на диске.
А для "разобраться" помогает прочитать конфиг строчка за строчкой и ответить себе на вопрос "зачем здесь эта строка?". Если ответить не получается - гуглим и отвечаем)) Таким образом и приходит понимание со временем)
Официальный образ php:7.3-fpm имеет на борту php-cli.
Поэтому в консоли внутри контейнера php будет работать по умолчанию.
А вот тут что-то не так, потому что php7.3-cli - это не расширение, поэтому его нужно оттуда убрать
RUN docker-php-ext-install pdo pdo_mysql php7.3-cli
В контейнере web работает nginx и судя по конфигу ищет файлы в /var/www/public, но судя по dockerfile вы их туда не положили, поэтому и выдавал 404. Поэтому и работало, если примонтировать эти файлы из хоста.
Поэтому это не костыль.
Если вы хотите иметь образ, в котором лежит уже готовое к старту приложение, то так и нужно делать.
Вы же скопировали файлы необходимые php-fpm в контейнер php, судя по Dockerfile app.
Так чем же web контейнер хуже)
Необходимо больше данных, чтобы понять что у вас произошло.
Например содержимое Dockerfile по которому происходит сборка.
По имеющимся данным можно лишь предположить что на том хосте на котором делается билд нет доступа к auth.docker.io, а точнее не удалось отрезолвить это имя. Но тут вопрос в том, зачем идти по этому адресу в момент билда.
1. Клиенту можно жестко указать по какому каналу подключаться, например:
var socket = io('wss://test.com', {
transports: ['websocket']
}
Но конечно лучше использовать возможность клиента подключиться с помощью другого транспорта.
На официальном сайте socket.io есть пример универсального сервера.
2. Это конечно хорошо, что вы смотрите в сторону оптимизации, но ответьте себе честно, остальной фронтенд настолько оптимизирован чтобы пытаться урезать и без того крохотные 50кб? На мой взгляд проще урезать где-то в другом месте, где оптимизация нужнее, оставив нормальную библиотеку с возможностью смены транспорта.
По описание сразу напрашивается вопрос:
Почему в пункте 1 нельзя сразу сгенерировать уникальный "цифро-буквенный номер" "на лету" и все остальные пункты не делать?
А если интересует именно количество записей, которое вернет тот или иной запрос, то советую посмотреть в сторону META информации. Это позволяет не делать еще один ресурсоемкий запрос.
Пример для sphinxql SHOW META
Выполнять после нужного запроса
Для ActiveDataProvider просто достаточно добавить в запросе ->showMeta(true)
Чтобы он брал общее количество записей для постраничной навигации из мета информации(Если вы конечно используете yii\sphinx\ActiveDataProvider и yii\sphinx\ActiveRecord).
"точнее секунд стандартные типы не работают."
Утверждение достаточно спорное для 2018 года.
Зародыш этого начал появляться в mysql 5.5.
Полноценная реализация в mysql 5.6.
Andrey Tsvetkov, Бывают задачи, для которых очень важна точность временных меток. Например аукционы, биржи, гонки и т.п. В некоторых областях не только миллисекунды - микросекунды важны.
Да, в yii1 вроде с этим сложнее было. Уже не помню что и как там, но есть вектор куда копать CUserIdentity.
Если честно, ни разу не приходило в голову реализовывать basic auntification на php.
Т.к. всегда использую его в связке с nginx, а там это очень удобно реализовано.
Именно средствами php это будет очень дорого по ресурсам, но возможно что-то подобное есть. Посмотрите tcpdf например.
Но все же советую воспользоваться быстрыми утилитами предназначенными специально для этого. А запускать утилиты можно и через php, если вы не знали.
P. S.:
Не очень понятно бывает слышать "чтобы не зависеть от ОС".
В вебе 99% случаев такую задачу будут решать на *nix.
И врядли хоть одно из этих решений потом сможет запуститься на win.
Ну так бы и написали, что вам нужно просто разбить pdf на страницы. Зачем усложнять? Бинарные файлы, парсить... Решение выше было изложено именно для парсинга содержимого pdf. Я неправильно понял.
Для ваших целей в linux есть инструмент pdfseparate например.
Если вы не можете понять где и как вставить этот код, то вам стоит либо воспользоваться уже готовыми решениями(В yii есть готовые классы для реализации подобной аунтификации), либо разобраться и понять как работает инициализация yii перед обработкой этого самого кода(читая код yii)
Любые советы вставить это туда-то сюда-то считаю "медвежьей услугой", т.к. любая нестандартная доработка в процессе инициализации заведомо костыль.
А для "разобраться" помогает прочитать конфиг строчка за строчкой и ответить себе на вопрос "зачем здесь эта строка?". Если ответить не получается - гуглим и отвечаем)) Таким образом и приходит понимание со временем)