>Разные сайты должны быть разделены максимально - никакой сайт не должен иметь прямой доступ к файлам других сайтов.
Это вы про php-скрипты говорите?
>Код для фронта можно помещать на отдельный домен и не копировать между проектами
Ведь в этом случае все 3 моих проекта будут иметь прямой доступ к статическим файлам на другом сайте, пусть это и мой же поддомен.
>на несколько внешних (не больше 6) + оверхед на днс запросы
Вот, об этом я как раз и думал, но в сети море противоречивой информации. Например, говорят, что если выносить на другой домен и другой сервер статику, то будет ускорение, если это будет поддомен того же сайта и тот же IP (всё на одном сервере), то никакого ускорения не будет.
Опять же, вы говорите "На несколько внешний", мой же поддомен будет считаться внешним ресурсом?
По идее, если домен 1, то и DNS запрос один должен быть - значит и оверхеда не будет? Значит и ускорения не будет? Ха ха, короче у меня каша в голове, но если бы смог найти ответы, то на Q&A ресурс не пришел с вопросом)
p.s. про плюсы понял, спасибо, подумаю в этом ключе тоже, возможно тут ваш подход применю
Т.е., если рассматриваем вариант с вынесением статики на поддомен, то на основном https будет адекватно браузером восприниматься, без "ругательств" на не true ссылки в документе?
Можете дать пару советов по настройке https? Буквально неделю назад знал про это на уровне "это такой http с шифрованием", а на неделе уже нужно сервер настроить под это дело и внедрить на все сайты.
Я правильно понял, что ваш метод - пишем 1 раз, а при развертывании всё же код копируем 3 раза, каждый в свою директорию?
Я озвучил вариант - пишем 1 раз, тянем с "одного урла". Если не считать, что вам удобней "так", а мне "так", есть ли разница например в производительности или ещё чем?
В моем варианте файлы будут в директории на уровне $_SERVER['DOCUMENT_ROOT'], в вашем, внутри рута. Т.к. это vps, то php может туда свободно достучаться, но будет ли разница в производительности? (лишь бы не в худшую сторону).
Если мы берем статику типа css и js ОК, их можно скопировать, но опять же. Наш клиент может зайти на ленд, а потом на сайт. При первом заходе у него уже часть статики закэшируется, если это будут ссылки на поддомен static.site.ru. Ещё читал, что браузер вроде как быстрее сможет загрузить страницу, если часть или всю статику вынести на другой ресурс. Лично для меня не запарно ставить абсолютные ссылки на эти изображения или стили.
Опять же вопрос с https остается открытым.
Можете аргументировать, минусы в моей идее по архитектуре? В чем явные плюсы вашего?
По ТЗ нужно чтобы по умолчанию на основном домене и всех его страницах был ВП. Именно сейчас нужно разместить другой движок с единой точкой входа на /lp и все последующие страницы. Возможно позже, какой-нибудь интернет-магазин и третий движок будет висеть на /shop/.../.../n+
Александр: помечу ответ Павла как решение, раз вам хотя бы помогло. В моём случае нет. Александр, а вы уверены, что до 0,03 с сократилось время подключения к БД, а не до 0,3 с? Я сам проверяю это на удалённом сервере, собственно на рабочей машине, где production сервер. Лично я пришел к выводу, что сильно быстрей ускорить не получится подключение к БД, т.к. большую часть времени тратится на преодоление расстояния до удаленного сервера и обратно.
Dark Hole: если не считать пробелы, работает без ошибок. В таком варианте "ложь" выдает 31.10.16 ; 31.10.16, пока просто запретил пробелы на ввод, всё равно они потом обрезаются. Спасибо за помощь с регуляркой!
Роман: так же проходит ошибочный вариант с не законченным интервалом
"02.11.16-02.11.16;02.11.16;02.11.16-"
"02.11.16-02.11.16;02.11.16;;02.11.16-"
и с двойной точкой с запятой
Фига себе, круто. А если в самом конце строки сделать ';' произвольной?
(?:\d{2}\.){2}\d{2}(?:\-(?:\d{2}\.){2}\d{2})?;?\s? делает символ произвольным везде, а не только самый последний
Артем Кисленко: https://gist.github.com/anonymous/d3680602c7d91c0d...
пример клиентской части. В данной реализации почти всё ОК, все соединения разрываются, если мы закрываем вкладки. Сейчас каким то образом нужно сделать так, что бы на одной из вкладок оно не разрывалось. То что вы предлагаете не работает, т.к. если мы быстро откроем вкладки, то они возьмут одно и то же значение из локальногоХранилища, т.к. страницы ещё не загружены и каждая из них не успели обновить значение.
Артем Кисленко: с предложенной вами реализацией возникли сложности, которые не ясно как решать.
Отключение и подключение сокета можно сделать при onblur, onfocus, тут вопросов нет.
У нас всегда должна быть открыта всего 1 вкладка с сайта и 1 соединение, даже если человек уходит на другой сайт или сворачивает браузер.
Следовательно нужно добавить проверку на то, последняя ли это вкладка и нужно ли засчитывать onblur и разрывать соединения.
Единственный возможный вариант писать и читать кол-во вкладок с помощью localStorage, но это работает не корректно, если юзер открывает сразу несколько вкладок, т.к. они сразу же не успели все загрузиться, то и значения которые будут браться на localStorage пересекаются, и если у нас было 4 вкладки и мы быстро откроем 10, то у всех у них по окончании загрузки выведется цифра 5. :((
1) Если 1 обращение к базе при каждому из 20 тыс. соединений, тут согласен, а если мы берём что то элементарное, например broadcasting и то редко?
2) Есть ли какие либо практические рекомендации вообще для работы с сокетами, типа когда нужно разрывать соединение, а когда можно плодить сколько угодно?
3) Можно ли к одному сокету подключить 1-10 млн. клиентов (на 1 порт)? Вопрос в плане, поддерживает это технология и каким образом это даст нагрузку на сервер? Если мы работаем с http тут понятно как просчитать кол-во запросов в секунду, с сокетами не понятно)
Вот примерно о таком варианте, я и думал. В таком случае, моя проблема решается очень просто.
Тогда у меня будет доп. вопрос, а насколько логично, постоянно разрывать и устанавливать соединения? Не будет ли приложение работать быстрее, если во всех вкладках открыты соединения и я их не разрываю при переходе между вкладками? А как это на VDSке скажется? Насколько это может увеличить/снизить нагрузку на неё? На данный момент системой пользуется пара десятков человек, а когда их будет несколько тысяч? В этом же и есть смысл сокетов, что соединение открыто и дальше у нас нет практически никаких "накладных расходов".
1) insert - тут с вами согласен. Иногда использую insert не в цепочке нескольких запросов, в таком случае без использования catch в $result не будет записан код ошибки. Или это как-то иначе можно сделать?
2) Вижу 2 варианта или убрать из insert catch блок и тогда в create будут отлавливаться ошибки или каким-то пока не понятным образом возвращать Exception в create. Подскажете как это обычно реализуют нормальные программисты?))