Ответы пользователя по тегу PHP
  • Node.js как замена PHP?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Ответ написан
    Комментировать
  • Как связать Node.js и PHP?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Проще всего этим приложениям обмениваться HTTP запросами на localhost, но при большой интенсивности таких запросов, или при необходимости оптимизировать время отклика - это становится не эффективно. Тогда есть куча других средств IPC, сокеты, мьютексы и семафоры, файловая система, файлы отображаемые в память (или разделяемая память), через базу данных, через шину событий и очередь сообщений MQ системы (ZeroMQ, ActiveMQ, RabbitMQ, Redis, AMQP и т.д.). Но все эти способы не сильно улучшат ситуацию по сравнению с HTTP, потому, что PHP приложение все время завершается и стартует заново, в общем - долго не живет. При каждом запуске оно опять будет устанавливать соединение или с шиной событий или с базой или сокеты открывать к постоянно находящемуся в памяти Node.js приложению, которое живет в памяти долго. Все перечисленные способы хороши для взаимодействия двух долгоживущих приложений, которые могут установить соединение и использовать его долго, и собственную память держать долго, а через соединение просто синхронизировать состояние нескольких процессов. А в случае с PHP, обычных HTTP запросов хватит с головой, высоконагруженную системы Вы все равно не построите на связке PHP+Node.js, а вот времени сэкономите, если сделаете как можно проще.
    Ответ написан
    Комментировать
  • Как составить план проектирования проекта?

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    Идея/концепция к проектированию не относится, это отдельный предварительный этап. Для проектов побольше, и в общем случае, проектирование включает такие шаги, многие из которых, конечно, можно пропустить или сократить до минимума, если задача не сложная:
    1. Системный анализ и изучение предметной области
    2. Формирование требований к разрабатываемой системе
    3. Архитектуная задача, которая сводится к простой формуле: разделять, называть и связывать подсистемы
    3.1. Декомпозиция сложных задач
    3.2. Слои (построение слоев абстракций)
    3.3. Планирование топологии системы, программной и серверной инфраструктур
    3.4. Решение вопроса интеграции подсистем, программные интерфейсы, контракты и связывание
    3.5. Интеграция с унаследованными приложениями
    3.6. Минимизация изменений, для случаев, когда постоянно происходят изменения в предметной области
    4. Выбор инструментов решения
    4.1. Выбор парадигм программирования и языков
    4.2. Выбор технологий и платформ
    4.3. Выбор моделей данных, алгоритмов и библиотек
    4.4. Выбор топологий и протоколов
    4.5. Выбор паттернов программирования
    5. Предварительные исследования
    5.1. Проверка гипотез, эксперименты
    5.2. Изучение особенностей технологий
    5.3. Прототипирование
    6. Задачи обеспечения надежности
    6.1. Планирование безопасности и защиты от несанкционированного доступа
    6.2. Планирование отказоустойчивости
    6.3. Планирование мер по обслуживанию системы в режиме эксплуатации
    6.4. Задачи высоких нагрузок, балансировки и масштабирования, если таковые предполагаются
    7. Организация процесса разработки
    7.1. Жизненный цикл программной системы
    7.2. Конвенции кода, соглашения и стандарты
    7.3. Оценка необходимых временных и финансовых ресурсов для разработки системы
    7.4. Календарный план
    7.5. Анализ и минимизация рисков, выявление слабых мест технологий и коллектива
    7.6. Закрепление принципов управления процессом разработки и корректировки задания в процессе
    8. Сборка технического задания из результатов всех предыдущих пунктов
    Ответ написан
    2 комментария
  • Диалог между двумя пользователями. Что выбрать, как решить?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Замените Apache на nginx и найдете сотни шаблонов развертывания вида: nginx + php + node. Или поставьте nginx перед Apache и отдавайте из него статику, а остальные запросы через реверс-прокси в Apache и на другой порт в node.js.
    Ответ написан
    1 комментарий
  • Как добавить в корзину интернет - магазина разные сущности?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Тут три варианта, или делайте subtype discriminator или документные (бессхемные) БД (например MongoDB), или во многих реляционных СУБД (например, PostgreSQL) уже доделали колонки типа JSON (куда можно писать все поля, которые отличаются у разных типов Item-ов, писать туда сериализованный объект, по сути).
    Ответ написан
  • Как организовать обмен сообщениями между различными физическими серверами?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    ØMQ aka ZeroMQ
    zeromq.org
    https://www.npmjs.org/package/zmq
    или другие *MQ протоколы/библиотеки, в общем, это направление имеет много альтернативных решений, но нам роднее и дороже ZMQ
    Ответ написан
    Комментировать
  • Структура и архитектура приложения

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    1. SSE (Server-Sent Events)
    2. POST-запрос из PHP в ноду. Каким образом @kazmiruk удалось сделать это медленным - не ясно.
    Ответ написан
    1 комментарий
  • Стоит ли использовать Mongo и Node.js для сервиса аналога Яндекс.Метрики и Google Analytics?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Нода может помочь, если Вы реализуете предварительную консолидацию данных в оперативной памяти. Про очереди - это правильная идея. А еще, нужно оптимизировать структуру БД, если вставка записей будет медленнее, чем их поток на входе, очередь постепенно начнет захлебываться и тут уж сколько хватит оперативной памяти, очередь просто сгладит нагрузки. Но из базы же еще нужно делать выборку при генерации отчетов, а она у Вас тоже медленная, поэтому думайте над структурой базы, оптимизируйте индексы, планы исполнения.
    Ответ написан
    Комментировать
  • Коннект к БД из функций (PHP)

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    Варианты:

    1. Сделайте статический класс db в db.php и в нем сделайте все функции «public static function» например: db::connect, db::query, db::freeCursor, db::getLasInserttId и т.д. и тогда вообще не нужно будет указатель на объект БД куда-то передавать в другие модули.

    2. Сделайте у себя в проекте FrontController — то есть, единую точку входа, все URL переадресуйте на нее и вместо того, чтобы потом подключать все модули в каждом php файле — подключайте их один раз централизовано из одного файла, а там и с путями проблем не будет.

    3. Сделайте в том файле, который устанавливает свзяь в БД переменную $db = db::connect(dbHost,dbName,dbUser,dbPassword); только объявляйте ее не внутри функции, а в теле php кода и потом во всех функциях, где нужно доступаться к пишите global $db; и далее $db->MethodName…

    4. Прочтите все же что-то по областям видимости в PHP

    5. Или возьмите готовый фреймворк, где эти задачи решены, а когда Вас от движка стошнит, а это рано или поздно случится, то к этому времени, Вы уже разберетесь как делать не нужно )
    Ответ написан
    Комментировать