tasque/event-loop

v0.1.5 2024-08-21 02:33 UTC

This package is auto-updated.

Last update: 2024-09-21 02:38:07 UTC


README

Build Status

使用 ReactPHP 事件循环 在传统 PHP 应用程序中运行,使用 Tasque

为什么?

为了允许在传统 PHP 环境中执行周期性后台任务,例如发送保持连接或心跳消息,这种环境中通常没有事件循环。

使用方法

使用 Composer 安装此包

$ composer install tasque/event-loop

配置 Nytris 平台

nytris.config.php

<?php

declare(strict_types=1);

use Nytris\Boot\BootConfig;
use Nytris\Boot\PlatformConfig;
use Tasque\EventLoop\TasqueEventLoopPackage;
use Tasque\TasquePackage;

$bootConfig = new BootConfig(new PlatformConfig(__DIR__ . '/var/cache/nytris/'));

$bootConfig->installPackage(new TasquePackage());
$bootConfig->installPackage(new TasqueEventLoopPackage());

return $bootConfig;

设置计时器

只需使用标准的 ReactPHP 计时器,只要在 nytris.config.php 中配置了包,如上所述。

index.php

<?php

declare(strict_types=1);

use React\EventLoop\Loop;

require_once __DIR__ . '/vendor/autoload.php';

Loop::addPeriodicTimer(1, function () {
    print 'Timer elapsed' . PHP_EOL;
});

等待 ReactPHP 从线程中返回的承诺

<?php

declare(strict_types=1);

use Tasque\EventLoop\TasqueEventLoop;

/*
 * This will cause the current thread (which may be the main thread
 * as well as a background thread) to pause until the promise is resolved,
 * in which case the result will be returned, or rejected, in which case
 * the reason will be thrown.
 */
$result = TasqueEventLoop::await($promise);

另请参阅