// Запуск 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
// Контроллер метода 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 для сложных бизнес-сценариев).
\Library\Dispatch::mode($packData)
.\Library\Logger
\Library\DingTalk\Action
\Library\Core\Links
\Helper\...
\Swlib\SaberGM
пример: \Commond\SpiderMan
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 )