123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
- namespace App\Jobs;
- use App\Models\StatServer;
- use Illuminate\Bus\Queueable;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Foundation\Bus\Dispatchable;
- use Illuminate\Queue\InteractsWithQueue;
- use Illuminate\Queue\SerializesModels;
- class StatServerJob implements ShouldQueue
- {
- use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
- protected $u;
- protected $d;
- protected $server;
- protected $protocol;
- protected $recordType;
- public $tries = 3;
- public $timeout = 60;
- /**
- * Create a new job instance.
- *
- * @return void
- */
- public function __construct($u, $d, $server, $protocol, $recordType = 'd')
- {
- $this->onQueue('stat');
- $this->u = $u;
- $this->d = $d;
- $this->server = $server;
- $this->protocol = $protocol;
- $this->recordType = $recordType;
- }
- /**
- * Execute the job.
- *
- * @return void
- */
- public function handle()
- {
- $recordAt = strtotime(date('Y-m-d'));
- if ($this->recordType === 'm') {
- //
- }
- $data = StatServer::lockForUpdate()
- ->where('record_at', $recordAt)
- ->where('server_id', $this->server['id'])
- ->where('server_type', $this->protocol)
- ->first();
- if ($data) {
- try {
- $data->update([
- 'u' => $data['u'] + $this->u,
- 'd' => $data['d'] + $this->d
- ]);
- } catch (\Exception $e) {
- abort(500, '节点统计数据更新失败');
- }
- } else {
- if (!StatServer::create([
- 'server_id' => $this->server['id'],
- 'server_type' => $this->protocol,
- 'u' => $this->u,
- 'd' => $this->d,
- 'record_type' => $this->recordType,
- 'record_at' => $recordAt
- ])) {
- abort(500, '节点统计数据创建失败');
- }
- }
- }
- }
|