1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xinyustudio-SocketFramework

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Углеродный облачный серверный фреймворк на основе Swoole

Функции:

  1. Автоматическое управление сессиями: интеграция SessionHandler или расширение через функцию session.
  2. Интеграция модели управления моделями, перенос реализации модели TP.
  3. Автоматическое кэширование на базе Redis.

Требования к среде:

  • Linux;
  • PHP 5.5 и выше.

Расширения:

  • Swoole;
  • Redis;
  • Msgpack;
  • JSON;
  • Fileinfo;
  • PDO;
  • Pdo-mysql;
  • MySQLnd;
  • Mysqli.

Примечание: необходимо различать уровни кэша. Один из них — временный кэш для CLI-приложений, который нужно очищать при каждом запуске сервиса. Другой — постоянный кэш, который не требует очистки при запуске приложения, например, сессии.

Также необходимо настроить интерфейс доступа к данным, чтобы определить, какие модули и классы могут быть доступны.

Есть функция ограничения IP, которая позволяет разрешить подключение только определённому диапазону IP-адресов клиентов.

Если вы используете метод cache для временного кэширования, используйте префикс tmp_, чтобы очистить временный кэш. Используйте cache('[cleartmp]') для очистки.

Для LOG-сервиса можно использовать TCP или UDP-протокол. При внедрении фреймворка настройте адрес журнала через Config или define. Все журналы, созданные с помощью метода L, будут отправлены на этот сервер.

TODO: реализовать пул соединений MySQL.

Автоматическое построение разделено на три части:

  1. Построение PDM и каталога информации.

PDM-метки:

  • 1: ...

Руководство по использованию

Содержание:

[Раздел 1. Зависимость от среды] (#__RefHeading__605_584730065)

Linux: (#__RefHeading__607_584730065) ниже .

Windows: (#__RefHeading__609_584730065) ниже .

[Раздел 2. Создание проекта] (#__RefHeading__611_584730065):

  1. Создайте файл запуска и импортируйте SwooleFramework: (#__RefHeading__613_584730065) фреймворк .

  2. Структура проекта: (#__RefHeading__615_584730065) ... .

  3. Режим сервера Swoole: (#__RefHeading__617_584730065) настройка .

LISTEN // настройка прослушивания: (#__RefHeading__619_584730065) конфигурация .

CONF // конфигурация сервера: (#__RefHeading__621_584730065) сервер .

[Раздел 3. Запуск программы] (#__RefHeading__623_584730065).

[Раздел 4. Список функций] (#__RefHeading__625_584730065).

Раздел 1. Зависимость от среды

В Linux:

  • PHP версии 5.5.0 и выше.
  • Расширение Swoole.
  • PHPRedis.

Установка Swoole: http://wiki.swoole.com/wiki/page/6.html.

В Windows:

  • Установите Cygwin и пакеты gcc, make, autoconf, php.
  • Установите Swoole и PHPRedis.

Раздел 2. Создание проекта

  1. Создайте файл запуска Start.php и импортируйте SocketFramework: Start.php:
error_reporting(E_ALL); // установить уровень ошибок PHP
$APP_PATH = 'Example';  // путь к коду
$RUNTIME_PATH = 'Runtime';  // кэш
define('APP_MODE','SWOOLE');
// режим
define
('DEFAULT_MODULE','Application'); // в этой версии обязательно определите модуль по умолчанию, значение которого совпадает с последним каталогом в APP_PATH
include '../SocketFramework/Tsy/Tsy.php';
// импортировать SocketFramework
  1. Структуру проекта можно представить так:

    • ServerDemo:
      • Start.php (файл запуска);
      • Demo:
        • Common (общая конфигурация);
        • Config;
        • Functions;
        • User:
          • Config;
          • Controller;
          • Model;
          • Object;
      • Swoole.php (настройка сервера в режиме Swoole);
      • http.php (конфигурация HTTP-сервера);
      • UserController.class.php (контроллер);
      • UserModel.class.php (модель);
      • UserObj.class.php (объект данных).
  2. Настройка сервера в режиме Swoole в файле Swoole.php: настройка включает в себя конфигурацию прослушивания и настройки сервера.

LISTEN // Конфигурация прослушивания

HOST

Разрешённый IP-адрес для доступа, установите 0.0.0.0 для разрешения доступа ко всем IP-адресам.

PORT

Установите порт, на котором будет открыт сервер.

TYPE

Тип прослушивания.

DISPATCH

Настройка маршрутизации, определяющая способ анализа параметров доступа.

OUT

Формат вывода параметров.

CONF // Конфигурация сервера

Подробности см. в официальной документации Swoole.

Daemonize

Запуск процесса в фоновом режиме. Если daemonize = 1, программа будет работать как фоновый процесс. Долговременные серверные программы должны включать эту опцию.

При включении фонового процесса стандартный ввод и вывод будут перенаправлены в log_file.

  • Если log_file не установлен, он будет перенаправлен в /dev/null, и все сообщения на экране будут потеряны.

task_worker_num

Настройте количество рабочих процессов задачи. После включения этой опции будет включена функция задачи, поэтому Swoole_server должен зарегистрировать события onTask и onFinish. Если они не зарегистрированы, сервер не запустится.

Рабочие процессы задачи являются синхронными и блокирующими, а их конфигурация аналогична конфигурации рабочего процесса синхронизации.

dispatch_mode

Стратегия распределения пакетов данных. Можно выбрать один из трёх типов, по умолчанию используется второй тип.

  • Первый тип: циклический режим, данные распределяются между каждым рабочим процессом по очереди.
  • Второй тип: фиксированный режим, данные распределяются в соответствии с дескриптором соединения. Это гарантирует, что данные, отправленные одним и тем же соединением, обрабатываются одним и тем же рабочим процессом.
  • Третий тип: режим захвата, главный процесс выбирает распределение данных в зависимости от состояния занятости рабочего процесса, данные будут распределяться только незанятым рабочим процессам.
  • Четвёртый тип: распределение по IP, клиентский IP хэшируется, и данные распределяются рабочему процессу с тем же номером. Алгоритм: ip2long(ClientIP) % worker_num.
  • Пятый тип: распределение UID, пользовательский код вызывает $serv->bind() для привязки соединения к UID. Затем Swoole распределяет данные рабочему процессу в соответствии со значением UID. Алгоритм: UID % worker_num, если вам нужно использовать строку в качестве UID, вы можете использовать crc32(UID_STRING).

dispatch_mode 4 и 5, эти два режима, когда dispatch_mode=1/3, нижний уровень скроет события onConnect/onClose, причина в том, что эти два режима не могут гарантировать порядок onConnect/onClose/onReceive.

Неблокирующие серверы запросов не должны использовать режимы 1 или 3.

worker_num

Количество запущенных рабочих процессов.

  • Для асинхронного кода без блокировки рекомендуется установить его равным 1–4 разам процессора.
  • Для синхронного блокирующего кода необходимо настроить его в соответствии с временем отклика запроса и нагрузкой системы. Например, время обработки одного запроса составляет 100 мс, и требуется обработать 1000 QPS, тогда необходимо настроить 100 или более процессов. Однако чем больше процессов запущено, тем больше памяти будет использоваться, и переключение между процессами также будет увеличиваться. Поэтому здесь следует выбрать подходящее число. Не устанавливайте слишком большое число. Каждый процесс занимает 40 мегабайт памяти, то есть 100 процессам потребуется 4 гигабайта памяти.

Три. Запуск программы

cd /home/ServerDemo
php start.php

Четыре. Список функций

Пять. История изменений

[2016-04-25]

В функции кеширования в операции с тегами в алгоритме для массивов используется операция вычисления разности множеств вместо поиска и последующего удаления.

[2016-04-24]

Функция кеширования поддерживает операторы [+][-][-A][+A][-S][-A], где + и - означают добавление или удаление, A — операцию над массивом, S — операцию над строкой. Пример:

cache('[+A]ke','ss');

[2016-04-22]

Если в стартовом скрипте определить значение APP_BUILD как true, будет выполнен поиск модулей в каталоге проекта и их связывание с конфигурацией базы данных в модуле. Затем будут созданы файлы контроллеров, объектов и моделей, а также соответствующие файлы кэша.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

На основе Swoole — это фреймворк для разработки Socket Server/Client/Http. Используется для быстрой сборки сокет-сервиса. Поддерживает HTTP-режим. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/xinyustudio-SocketFramework.git
git@api.gitlife.ru:oschina-mirror/xinyustudio-SocketFramework.git
oschina-mirror
xinyustudio-SocketFramework
xinyustudio-SocketFramework
master