spatie/async 扩展使用的问题

JackDx

问题描述

看了TY大佬(@Tinywan)的公众号文章,有个spatie/async 的使用;
https://github.com/spatie/async
https://mp.weixin.qq.com/s/sd3leq0ezl9ssPryUHQ18A
我是在thinkphp5.1里面使用;
但是报错了,如果不使用TP的相关的类是可以正常跑的,在子任务里面用了TP的相关类就找不到类了;
我看文档是子任务要初始化类,但是我应该怎么把TP的类注入到子任务呢?
我看Laravel 中是下面这样操作,TP的应该怎么操作呢?

Laravel

$pool[] = async(function () use ($result, $syncemployRepository) {
    $app = require __DIR__.'/../../../../bootstrap/app.php';
    $kernel = $app->make(\Illuminate\Contracts\Console\Kernel::class);
    $kernel->bootstrap();
    // 任务代码
})->then(function ($output) use($pool) {
    $pool->stop();
})->catch(function (Exception $e) {
    Log::error('createauth_sync', ['msg' => $e->getMessage()]);
});

TinkPHP:

$pool = Pool::create()
     ->concurrency(20)
    ->autoload(__DIR__ . '/../../../vendor/autoload.php');
foreach ($cursor as $user) {
    $pool[] = async(function () use ($user) {
        return self::syncUp($user);
    })->then(function (string $output) use ($user) {
        Log::record($output);
    })->catch(function (\Throwable $e) use ($user) {
        Log::record($e->getMessage());
        exit();
    });
}
await($pool);

报错 找不到类

public static function syncUp($user): string
{
    return Db::name('user')->where('id',$user['id'])->value('name');
}

截图

191 1 0
1个回答

Tinywan

你这是使用方式不正确,都提示的很明显了Route.php 路由文件不存在,和使用扩展没关系

  • 暂无评论
🔝