синхронная диспетчеризация работы как? - PullRequest
0 голосов
/ 15 апреля 2019

Я занимаюсь разработкой приложения для нескольких арендаторов с laravel 5.8 и использую this для установки соответствующего идентификатора арендатора для задания, но когда я отправляю задания с консоли, как это

$websites = \Hyn\Tenancy\Models\Website::all();
        foreach ($websites as $website) {
            $environment = $this->app->make(\Hyn\Tenancy\Environment::class);
           $environment->tenant($website);

            $schedule->call(function() use ($website){Bus::dispatch((new FetchCallsData()));})->hourly();
}

и в buildDatabaseRecord, когда я попытался получить текущий веб-сайт, у меня будет последний, который был в foreach. Я обнаружил, что buildDatabaseRecord будет работать асинхронно по событиям, поэтому текущий веб-сайт будет неправильным в buildDatabaseRecord

protected function buildDatabaseRecord($queue, $payload, $availableAt, $attempts = 0)
    {
        $queueRecord = [
            'queue' => $queue,
            'attempts' => $attempts,
            'reserved_at' => null,
            'available_at' => $availableAt,
            'created_at' => $this->currentTime(),
            'payload' => $payload,
        ];
        $website   = app(\Hyn\Tenancy\Environment::class)->tenant();
        //here is the issue and I get last website in foreach loop for all jobs 
         $queueRecord['tenant_id']=$website->id
        //also I tried using global variables but same result 
      /*if(isset( $_SERVER['tenant_id']))
            $queueRecord['tenant_id'] = $_SERVER['tenant_id'];*/


        return $queueRecord;
    }

Я думаю, мне нужно добавить onTenant($website) или что-то подобное к работе?

...