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

OSCHINA-MIRROR/ZSwoole-ZS

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

Режим работы

Работа Swoole

// Запуск Test конфигурации в каталоге BinConfig
php server.php start --conf-Test

// Перезапуск 
php server.php reload --conf-Test

// stop не рекомендуется
ps -ef |grep -i Test |awk '{print $2}' |xargs kill -9

Cli работа

// Контроллер метода key value ...
php cli.php Tests run  key value

## Характеристики

### Скриптовый сервис
 * Скриптовый сервис параметр `server_type` можно использовать только HTTP (по умолчанию)
* Высокая зависимость от Redis (задачи рабочего процесса)

  Рамки включают процесс приложения `\PipProcess\Dispense::class`, который может быть использован для:

 * Настраиваемое распределение задач рабочего процесса
* Настраиваемый период бездействия рабочего процесса до перезапуска

```php
        // Распределение задач
        \swoole_timer_tick(5000, [self::class, 'saveWorkConfig']);

        // todo каждые 10 минут таймер перезапуска настраивается
        \swoole_timer_tick(1000 * 600, [\Library\Kill::class, 'reloadWorker']);

Распределение задач рабочего процесса в форме скрипта

Из таймера распределения задач видно, что дочерний процесс запускает распределение задач рабочего процесса, которые могут быть настроены. Конкретные операции следующие:

<?php

namespace Controller;

use Library\Logger;
use Core\BaseController;

class Test extends BaseController
{
   /**
    * Когда рабочий процесс запускается, если есть распределённые задачи, он будет вызывать метод init по умолчанию маршрутизации в соответствии с маршрутом по умолчанию
    *
    * // маршрут по умолчанию init
    * 'autoRoute' => \Controller\Test::class,
    */
    public function init()
    {
        // начальная конфигурация Pudan
        $pudanInfo = SettingModel::savePudanConfig();

        // инициализация конфигурации Pudan
        Logger::pudanInfo(['начальная конфигурация Pudan =>' => $pudanInfo]);

        // обновлять цены на контрольные пары каждые 300 мс
        \swoole_timer_tick(300, [PudanService::class, 'benchmarkPrice']);

        // установить таймер для обновления конфигурации Pudan
        \swoole_timer_tick(5000, [SettingModel::class, 'saveConfig']);        
    }

    /**
     * Дочерний процесс вызывает метод taskDispense по умолчанию маршрутизации и возвращает список задач
     * ------------------------------------------------------------
     */
    public function taskDispense()
    {
        // получить контрольный список Pudan
        $pudanList = PudanListModel::pudanList();

        $taskList = [];

        // распределить задачи Pudan
        foreach ($pudanList as $pudanInfo) {

            if (empty($pudanInfo['benchmark_exchange'])) continue;

            // параметры задачи: символ торговой пары, sig учётная запись, стратегия, timidRate, serviceRate
            $taskList[] = [
                $pudanInfo['symbol'],                                           // символ торговой пары
                $pudanInfo['ac_name'],                                          // sig учётная запись
                $pudanInfo['strategy'],                                         // стратегия
                $pudanInfo['timidRate'],                                        // коэффициент страха и жадности
                $pudanInfo['serviceRate']                                       // комиссия
            ];
        }

        // ключ массива по умолчанию соответствует идентификатору рабочего процесса
        return $taskList;        
    }
}

Внешний интерфейс сервиса

Поддерживает протоколы TCP, Http, Webscocket. Рамка совместима с версией Swoole4.2, параметр enable_coroutine равен false, и используется вызов сопрограммы go (не рекомендуется использовать сопрограмму Swoole для сложных бизнес-сценариев).

  • Пользовательский параметр open_dispatch_func открывает этот параметр интерфейса сервиса, который может настраивать метод распространения данных пакета \Library\Dispatch::mode($packData).

Разное

  • Журнал класса \Library\Logger
  • Уведомление о булавке \Library\DingTalk\Action
  • База данных \Library\Core\Links
  • Общие методы \Helper\...
  • Saber гуманизированный клиентский HTTP-клиент \Swlib\SaberGM пример: \Commond\SpiderMan

Резюме исключений

  1. PHP Warning: Swoole\Server::start(): onPipeMessage handler error.
  • ProcessManager::sendToWorker($workerId, $taskInfo, [Central::class, 'taskRouter']);

  • Выбрасывает ошибку: PHP Warning: Swoole\Server::start(): onPipeMessage handler error.

  • Исправление: внешняя упаковка массива $taskInfo

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

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

Введение

Это очень простой и полезный фреймворк Swoole. Развернуть Свернуть
Отмена

Обновления (1)

все

Участники

все

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

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