@@ -61,6 +61,11 @@ class TaskQueueService
61
61
*/
62
62
private $ taskRepo ;
63
63
64
+ /**
65
+ * @var boolean
66
+ */
67
+ private $ databaseDisabled = false ;
68
+
64
69
/**
65
70
* @param EntityManager $entityManager
66
71
* @param PheanstalkConnection $beanstalk
@@ -82,6 +87,16 @@ public function __construct(
82
87
$ this ->logWorkerOutputOnFailure = $ params ['log_worker_output_on_failure ' ];
83
88
}
84
89
90
+ /**
91
+ * Disables the use of the task entity
92
+ *
93
+ * @return void
94
+ */
95
+ public function disableDatabase ()
96
+ {
97
+ $ this ->databaseDisabled = true ;
98
+ }
99
+
85
100
/**
86
101
* Returns the default tube name
87
102
*
@@ -121,11 +136,13 @@ public function queueTask(TaskDescriptionInterface $task, $tube = null)
121
136
}
122
137
$ stringVersion = get_class ($ task ) . ':: ' . $ this ->serializer ->serialize ($ task , 'json ' );
123
138
$ taskEntity = new Task ($ task , $ stringVersion , $ tube );
124
- $ this ->entityManager ->persist ($ taskEntity );
125
- $ this ->entityManager ->flush ($ taskEntity );
126
- $ task ->setTaskIdentifier ($ taskEntity ->getId ());
127
- //regenerate it now we have an identifier
128
- $ stringVersion = get_class ($ task ) . ':: ' . $ this ->serializer ->serialize ($ task , 'json ' );
139
+ if (!$ this ->databaseDisabled ) {
140
+ $ this ->entityManager ->persist ($ taskEntity );
141
+ $ this ->entityManager ->flush ($ taskEntity );
142
+ $ task ->setTaskIdentifier ($ taskEntity ->getId ());
143
+ //regenerate it now we have an identifier
144
+ $ stringVersion = get_class ($ task ) . ':: ' . $ this ->serializer ->serialize ($ task , 'json ' );
145
+ }
129
146
$ this ->beanstalk
130
147
->useTube ($ tube )
131
148
->put ($ stringVersion );
@@ -228,7 +245,13 @@ public function reserveTask($tube = null)
228
245
$ this ->beanstalk ->delete ($ inTask );
229
246
throw new TaskQueueServiceException ("Invalid data in TaskQueue {$ tube }" );
230
247
}
231
- $ taskEntity = $ this ->taskRepo ->find ($ taskObject ->getTaskIdentifier ());
248
+ if (!$ this ->databaseDisabled ) {
249
+ $ taskEntity = $ this ->taskRepo ->find ($ taskObject ->getTaskIdentifier ());
250
+ } else {
251
+ //remake the task entity
252
+ $ taskEntity = new Task ($ taskObject , '' , $ tube );
253
+ }
254
+
232
255
if (!($ taskEntity instanceof Task)) {
233
256
$ this ->beanstalk ->delete ($ inTask );
234
257
throw new TaskQueueServiceException (
@@ -287,6 +310,9 @@ public function markFailed(WorkPackage $task, $log)
287
310
*/
288
311
private function updateTaskLog (WorkPackage $ task , $ log )
289
312
{
313
+ if ($ this ->databaseDisabled ) {
314
+ return ;
315
+ }
290
316
$ taskEntity = $ task ->getTaskEntity ();
291
317
if ($ taskEntity instanceof Task) {
292
318
$ taskEntity ->setLog ($ log );
@@ -307,6 +333,9 @@ private function updateTaskLog(WorkPackage $task, $log)
307
333
*/
308
334
private function updateTaskStatus (WorkPackage $ task , $ status )
309
335
{
336
+ if ($ this ->databaseDisabled ) {
337
+ return ;
338
+ }
310
339
$ taskEntity = $ task ->getTaskEntity ();
311
340
if ($ taskEntity instanceof Task) {
312
341
$ taskEntity ->setStatus ($ status );
0 commit comments