一些小助手

0.2.4.4 2020-01-30 07:46 UTC

This package is auto-updated.

Last update: 2024-09-29 05:21:32 UTC


README

一些小助手

安装

composer require avnovoselov/small

API

已过时 ↓

Daemon

InterfaceDaemon 和 AbstractDaemon

要创建新的守护进程,应扩展抽象类 AbstractDaemon 并实现接口 InterfaceDaemon

InterfaceDaemon::process() - 在每个迭代中执行的方法(守护进程的主体)

Counter.php

class Counter extends \Small\AbstractDaemon
{
    private $count = 0;

    public function process()
    {
        ++$this->count;
        echo PHP_EOL . " iteration run at: {$this->lastRunDate}";
        echo PHP_EOL . " iteration number: {$this->count}";
    }
}

如果需要添加执行迭代的条件,应实现方法 InterfaceDaemon::skip

InterfaceDaemon::skip(): bool - 检查是否满足执行迭代条件的方法。例如,连接到数据库。

class Counter extends \Small\AbstractDaemon
{
    ...

    public function skip(): bool
    {
        return time() % 2;
    }
}

在上面的例子中,方法 Counter::skip 跳过在奇数秒启动的迭代

InterfaceDaemon::environment(): InterfaceDaemon - 确定环境配置的方法(数据库连接设置,错误显示等)。

class Counter extends \Small\AbstractDaemon
{
    ...

    public function environment(): \Small\InterfaceDaemon
    {
        ini_set('display_errors', 0);
        ini_set('display_startup_errors', 0);
        error_reporting(0);

        return $this;
    }
}

AbstractDaemon::arguments(array $defaultArguments = []): \Small\InterfaceDaemon - 确定守护进程调用参数并设置默认值的方法。

daemon/counter.php

$counterDaemon = new Counter('Counter');

$counterDaemon
    ->arguments(['count' => 0])
    ->run();
/> php daemon/counter.php --count=3

对于守护进程 $counterDaemon,可用参数 --count,示例中计数将从此值开始,参数 --count 的默认值为 0

AbstractDaemon::$arguments - \Small\Arguments 类的实例,提供对守护进程启动参数的访问。

class Counter extends \Small\AbstractDaemon
{
    public function environment(): \Small\InterfaceDaemon
        {
            $this->count = $this->arguments->get('count');

            ini_set('display_errors', 0);
            ini_set('display_startup_errors', 0);
            error_reporting(0);

            return $this;
        }
}

AbstractDaemon::run(): void - 启动守护进程

AbstractDaemon::__construct(string $name, int $sleep = 1): AbstractDaemon - 守护进程的构造函数

  • $name - 守护进程的名称
  • $sleep - 迭代间的延迟(秒)

Arguments