DatabaseQueue.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\Core\Queue;
  3. use Illuminate\Contracts\Queue\Queue;
  4. class DatabaseQueue implements Queue
  5. {
  6. /**
  7. * @param $job
  8. * @param string $data
  9. * @param string $queue
  10. */
  11. public function push($job, $data = '', $queue = 'default')
  12. {
  13. $model = new \ThurData\Servers\KerioEmail\Core\Queue\Models\Job();
  14. $model->job = $job;
  15. $model->data = $data;
  16. $model->queue = $queue;
  17. $model->save();
  18. }
  19. public function pushRaw($payload, $queue = null, array $options = [])
  20. {
  21. }
  22. public function later($delay, $job, $data = '', $queue = null)
  23. {
  24. }
  25. public function pushOn($queue, $job, $data = '')
  26. {
  27. }
  28. public function laterOn($queue, $delay, $job, $data = '')
  29. {
  30. }
  31. /**
  32. * @param string $queue
  33. * @return mixed
  34. */
  35. public function pop($queue = 'default')
  36. {
  37. return \ThurData\Servers\KerioEmail\Core\Queue\Models\Job::where('queue', $queue)
  38. ->where(function($query){
  39. $query->where('status', '=', '')
  40. ->orWhere(function($query){
  41. $query->where('status', '=', \ThurData\Servers\KerioEmail\Core\Queue\Models\Job::STATUS_ERROR);
  42. $query->whereRaw('retry_after < NOW()');
  43. $query->where('retry_count', '<', '100');
  44. })
  45. ->orWhere(function($query){
  46. $query->where('status', '=', \ThurData\Servers\KerioEmail\Core\Queue\Models\Job::STATUS_WAITING);
  47. $query->whereRaw('retry_after < NOW()');
  48. $query->where('retry_count', '<', '100');
  49. });
  50. })
  51. ->first();
  52. }
  53. }