Данный проект использует официальный фреймворк Swoole Framework. Оптимизация проводится без изменения базового фреймворка. В настоящее время основной оптимизацией является поддержка контроллеров и разделение конфигурационных файлов в зависимости от окружения.
Проект предназначен для снижения затрат на разработку сервиса WeChat, используя Swoole Framework для повышения способности системы обрабатывать большое количество одновременных запросов.
Основные характеристики: асинхронная обработка, асинхронная работа с MySQL, Redis, пулы соединений с базой данных
Адрес проекта фреймворка: (https://github.com/swoole/framework)
https://github.com/eaglewu/swoole-ide-helper
Описание фреймворка Установка расширения runkit (горячая перезагрузка), некоторые методы runkit в настоящее время выдают ошибки и не могут использоваться корректно
git clone --depth=1 -v git@github.com:runkit7/runkit7.git /tmp/runkit-ext
cd /tmp/runkit-ext && phpize && ./configure && sudo make && sudo make install
Чтобы упростить разработку, потребуется добавление некоторых объявлений вручную в среде разработки для удобства автоматических подсказок IDE:Если добавлены пользовательские глобальные объекты, объявления также можно добавить самостоятельно.
#1 vendor/matyhtf/swoole_framework/libs/Swoole/Swoole.php
* @property \EasyWeChat\Foundation\Application $easywechat
* @property \App\Component\Event $myevent
* @property \App\Component\RabbitMQ $rabbitmq
* @property \App\Common\Strip $strip
* @property \App\Component\RBAC $rbac
#2 vendor/matyhtf/swoole_framework/libs/lib_config.php метод model, часть комментариев return параметров изменена следующим образом
@return \App\Component\BaseModel
├── apps Проектная директория
│ ├── classes Директория классов, где можно создавать любые необходимые вам директории или скрипты, Swoole будет автоматически загружать и регистрировать пространство имён
│ │ ├── BaseController Базовый контроллер
│ │ ├── Component Директория компонентов
│ │ ├── DAO Директория доступа к данным
│ │ ├── Handler Директория выполнения событий, используется для запуска задач по расписанию
│ │ ├── Observer Неизвестно
│ │ ├── Queue Директория пользовательских очередей
│ │ ├── Router Директория пользовательского маршрутизатора, требуется добавить Swoole::getInstance()->addRouter(new App\Router\ModuleRouter(), true); в соответствующий Server.php
│ │ └── Service Директория бизнес-логики, специально предназначена для хранения бизнес-логики
├── WechatHandler Код обработки событий WeChat, разделённый по различным типам сообщений и событий```markdown ├── configs Директория конфигурационных файлов, некоторые конфигурации могут использоваться всеми, без необходимости их разделения в поддиректориях, конкретная реализация контролируется самостоятельно │ ├── develop Конфигурация для среды разработки │ ├── production Конфигурация для продакшена │ └── test Конфигурация для тестирования ├── controllers Директория контроллеров │ ├── Admin Директория контроллеров модуля Admin │ ├── Api Директория контроллеров модуля Api │ └── Index Директория контроллеров модуля Index ├── events Директория скриптов определения событий, требуется запустить функционал событий, подробнее см. файл server/README.md ├── factory Добавляет глобальные объекты, независимые от HTTP-запросов, чтобы данные запросов могли корректно управляться, подробнее см. файл server/README.md ├── models Директория моделей доступа к базе данных └── templates Шаблонные файлы директория ├── Admin ├── Index ├── page └── user public Директория общих файлов сайта, nginx's root конфигурация указывает на эту директорию server Директория сценариев запуска Swoole ├── database Директория с описаниями баз данных ├── pid Директория хранения PID процессов Swoole └── ssl Директория HTTPS сертификатов vendor Директория пакетов Composer
[Описание сервиса](server/README.md)
Конфигурация NGINX
-------------------
Замените свойства своего окружения `{yourDomain}` и `{yourPath}`
```sh
server {
listen 80;
server_name {yourDomain}.cn;
root /{yourPath}/swooleproject/public/;
#charset koi8-r;
access_log logs/{yourDomain}-access.log;
error_log logs/{yourDomain}-error.log error;
location / {
index index.html;
if (! -e $request_filename) {
proxy_pass http://127.0.0.1:9501;
}
}
location /index.html {
proxy_pass http://127.0.0.1:9501/;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
apps/config/
для конфигураций.apps/factory/
добавьте регистрируемые объекты; имя файла будет служить именем глобального объекта, например rabbitmq.php
.\Swoole::$php->rabbitmq->{метод}
Как создать пользовательский асинхронный обработчикВыполнение следующего скрипта автоматически отобразит справочную информацию:
php server/appServer.php --help
Выполнение следующего скрипта автоматически отобразит справочную информацию:
php server/eventWorkersServer.php --help
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )