小编jas*_*ode的帖子

Laravel 队列随机不调度

我试图从控制器分派作业,但有时队列有效,有时它会立即执行代码。另一方面,从命令调度工作正常,所以我想知道有什么区别。

我尝试过的事情:

  • 我尝试了数据库和 Redis 连接,但两个连接都出现了问题
  • 不运行队列监听/工作,作业会随机执行,所以监听/工作不会是问题
  • 检查网络服务器/PHP 日志是否有错误,没有结果
  • 在静态调度函数之前出现问题。当我在静态调度函数中放入一个die时,它有时会杀死应用程序,有时它仍然会立即在句柄中运行解码....

供应商/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php

public static function dispatch()
{
    die('xxx');
    
    return new PendingDispatch(new static(...func_get_args()));
}
Run Code Online (Sandbox Code Playgroud)

我试图找到在调度函数之前发生的事情,但是我找不到在静态句柄函数之前执行的任何函数。我感觉有些东西在 PHP 中崩溃了,或者立即执行作业,但我找不到核心中发生这种情况的地方。

控制器

class CreateTestJob
{
    public function __invoke(Request $request)
    {
        TestJob::dispatch(rand(0, 999999));
    }
}
Run Code Online (Sandbox Code Playgroud)

工作

class TestJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct($test)
    {
        $this->test = $test;
    }

    public function handle()
    {
        sleep(30);

        echo 'done';
    }
}
Run Code Online (Sandbox Code Playgroud)

我还尝试在 TestJob 的 de handle 函数中创建语法错误,以便我可以看到堆栈跟踪,但它显示“1 个未知帧”。我想知道那是什么

堆栈跟踪

php laravel

6
推荐指数
1
解决办法
237
查看次数

Vue动态地图

我有一个要用来制作动态mapGetters的道具,但mapGetters认为道具是未定义的,这可能是因为在道具之前已加载了计算对象。有人知道我如何使它动态吗?我的代码如下:

export default {
    props: ['listType'],
    components: {
        addrow: AddRow
    },
    computed: {
        ...mapGetters({
            list: `${this.listType}/list`,
            current: 'Dropdown/current'
        }) 
    },
}
Run Code Online (Sandbox Code Playgroud)

javascript vue.js vuex vuejs2

3
推荐指数
2
解决办法
784
查看次数

标签 统计

javascript ×1

laravel ×1

php ×1

vue.js ×1

vuejs2 ×1

vuex ×1