acquireLock()) { sleep(5); continue; } $item = $queue->getNextItem('integrity_check'); if ($item) { try { $success = $handler->checkRecordIntegrity( $item['data'], $handler->getAttributeMetadata() ); $queue->updateItemStatus( $item['id'], $success ? 'completed' : 'failed', $success ? null : 'Record check failed' ); // Respect rate limits sleep(20); } catch (Exception $e) { $queue->updateItemStatus( $item['id'], 'failed', $e->getMessage() ); if (stripos($e->getMessage(), 'rate limit') !== false) { sleep(65); // Wait slightly over a minute } } } else { sleep(5); } $queue->releaseLock(); } catch (Exception $e) { error_log("Queue processor error: " . $e->getMessage()); $queue->releaseLock(); sleep(5); } } ?>