ComusThumbz 文档
管理员登录

Video Queue

Overview

The Video Queue Visualizer is an interactive queue management interface for the ComusThumbz video processing system. It provides a visual, column-based view of the processing queue organized by priority levels, allowing administrators to monitor job status, adjust priorities, and cancel jobs in real-time. The interface features drag-and-drop priority adjustment and auto-refreshes every 15 seconds.

Location: Navigate to this page via Admin Panel → Videos → Queue Visualizer or access directly via ct/admin/videoqueuevisualizer.php

[Screenshot: video-queue-visualizer-main]


Getting to This Page

  1. Navigate to Admin Panel → Videos
  2. Click Queue Visualizer link
  3. Alternatively, access from the Video Processing Dashboard via "Queue Visualizer" button
  4. Direct access via ct/admin/videoqueuevisualizer.php

 

Note:
This visualizer provides a Kanban-style view of the video processing queue. Jobs are organized in columns by priority level, making it easy to see what's being processed and what's waiting.

 


System Requirements

 

Configuration Required:
This page requires the video processing system to be configured. It reads from and writes to the tblVideoProcessingJobs table and requires write permissions for priority updates.

 

PHP Requirements

Requirement Minimum Recommended Notes
PHP Version 8.0 8.2+ Uses modern PHP syntax
memorylimit 64M 128M For queue data retrieval
maxexecutiontime 30 60 Standard page load

Required PHP Extensions

Extension Required Purpose
mysqli Yes Database connectivity
session Yes CSRF protection, authentication
json Yes AJAX response handling

Required PHP Functions

Function Required For Notes
mysqliprepare() SQL queries Prepared statements
mysqlistmtbindparam() Query parameters Core
mysqlistmtexecute() Query execution Core
bin2hex() CSRF token generation Security
randombytes() CSRF token generation Security
date() Timestamp formatting Display
htmlspecialchars() Output sanitization Security

Folder Permissions

Folder Permission Purpose
ct/admin/ 755 (read) Page access

Network Requirements

Endpoint Protocol Purpose
Font Awesome CDN HTTPS Icons

Features & UI Elements

Page Header

[Screenshot: video-queue-visualizer-header]

Element Description
Title "Video Processing Queue Visualizer" with columns icon
Breadcrumb Dashboard → Videos → Queue Visualizer
Subtitle "Visual queue management with priority columns"

Queue Statistics Bar

[Screenshot: video-queue-visualizer-stats]

Stat Description Icon
Total Pending Jobs waiting to process fa-clock
Processing Jobs currently active fa-spinner
Completed (24h) Jobs finished in last day fa-check
Failed Jobs with errors fa-times

Processor Settings Display

[Screenshot: video-queue-visualizer-settings]

Setting Description
Max Concurrent Maximum parallel jobs
Timeout Job timeout in minutes
Processor Status Enabled/Disabled
Default Priority Default priority for new jobs

Navigation Buttons

[Screenshot: video-queue-visualizer-navigation]

Button Action
Back to Dashboard Navigate to videoprocessordashboard.php
Settings Navigate to videoprocessorsettings.php
Refresh Reload queue data

Auto-Refresh Indicator

[Screenshot: video-queue-visualizer-auto-refresh]

Element Description
Status Text "Auto-refresh: 15s"
Countdown Shows seconds until next refresh
Note: The queue automatically refreshes every 15 seconds to show real-time status. Refresh is paused while the priority modal is open.

Queue Columns

[Screenshot: video-queue-visualizer-columns]

The queue is displayed in four columns:

Column Status Color
Currently Processing processing Blue (#3498db)
High Priority pending, priority 8-10 Red (#e74c3c)
Medium Priority pending, priority 5-7 Yellow (#f39c12)
Low Priority pending, priority 1-4 Gray (#95a5a6)

Job Cards

[Screenshot: video-queue-visualizer-job-card]

Each job is displayed as a card with:

Element Description
Video Title Title from tblVideos (truncated to 30 chars)
Job Type Badge Color-coded job type
Priority Badge Priority level (1-10)
Wait Time Time since job created
Attempts Current attempt / Max attempts
Error Indicator Shows if job has failed before
Action Buttons Priority and Cancel buttons

Job Type Colors:

Job Type Color
extractmetadata Blue
transcode Green
generatethumbnails Purple
generatesprites Teal
generatepreview Orange
generategif Pink
generatecontactsheet Indigo
uploadcdn Cyan
cleanup Gray

Priority Modal

[Screenshot: video-queue-visualizer-priority-modal]

When clicking "Priority" button on a job card:

Element Description
Modal Title "Set Priority"
Current Priority Shows current value
Priority Slider Range 1-10
Priority Label Low (1-4), Medium (5-7), High (8-10)
Save Button Apply new priority
Cancel Button Close without changes
Tip: Higher priority jobs (8-10) are processed first. Use high priority for urgent content that needs to go live quickly.

Bulk Actions

[Screenshot: video-queue-visualizer-bulk-actions]

Action Description
Select All Checkbox to select all visible jobs in a column
Cancel Selected Cancel all selected jobs

Priority System

Priority Levels

Level Range Processing Order
High 8-10 Processed first
Medium 5-7 Processed after high
Low 1-4 Processed last

Priority Impact

  1. Jobs with higher priority are picked up first by the processor
  2. Within same priority, older jobs are processed first (FIFO)
  3. Processing jobs are not affected by priority changes
  4. New videos get default priority from settings

 

Warning:
Changing priority does not interrupt jobs already processing. Priority only affects which pending job is picked up next.

 


Step-by-Step Usage

Viewing Queue Status

  1. Navigate to Admin Panel → Videos → Queue Visualizer
  2. View four columns showing jobs by priority/status
  3. Check stats bar for overall queue health
  4. Review processor settings in sidebar

Changing Job Priority

  1. Find the job card in one of the columns
  2. Click Priority button (sliders icon)
  3. Priority modal opens
  4. Drag slider to desired priority (1-10)
  5. Click Save
  6. Job moves to appropriate column

Cancelling a Single Job

  1. Find the job card
  2. Click Cancel button (X icon)
  3. Confirm cancellation in dialog
  4. Job status changes to "cancelled"
  5. Job card disappears from queue

Bulk Cancelling Jobs

  1. Check "Select All" in column header OR
  2. Click individual job checkboxes
  3. Click "Cancel Selected" button
  4. Confirm bulk cancellation
  5. All selected jobs cancelled

Monitoring Processing

  1. Watch "Currently Processing" column
  2. Jobs show processing duration
  3. Completed jobs disappear automatically
  4. Failed jobs show error indicator

AJAX Actions

The visualizer uses POST requests with CSRF protection:

Action Parameters Description
updatepriority jobid, priority Update job priority (1-10)
bulkcancel jobids[] Cancel multiple jobs

Cancel action uses videodashboardapi.php:

Action Parameters Description
canceljob jobid Cancel single job

Job Status Flow

[pending] → [processing] → [completed]
    ↓           ↓
    └→ [cancelled]  [failed] → (retry) → [pending]
                         ↓
                    (max attempts) → stays [failed]

Auto-Refresh Behavior

Scenario Refresh
Normal operation Every 15 seconds
Priority modal open Paused
User just made action Immediate + reset timer
Page loses focus Continues

Troubleshooting

Common Issues

 

Error:
Jobs not appearing in queue


Cause: No pending jobs or filter mismatch
Solution:

  1. Check if jobs exist: SELECT COUNT(*) FROM tblVideoProcessingJobs WHERE status = 'pending'
  2. Verify database connection
  3. Refresh the page

 

 

Error:
Priority changes not saving


Cause: CSRF token expired or database error
Solution:

  1. Refresh page to get new CSRF token
  2. Check browser console for errors
  3. Verify database write permissions

 

 

Error:
Jobs stuck in "Currently Processing"


Cause: Processor crashed or job timed out
Solution:

  1. Check if videoprocessor.php is running
  2. Wait for timeout (per settings)
  3. Jobs will auto-reset or fail after timeout
  4. Manual reset:

 

UPDATE tblVideoProcessingJobs

SET status = 'pending', processingstartedat = NULL

WHERE status = 'processing'

AND processingstartedat < DATESUB(NOW(), INTERVAL 1 HOUR);

 

 

Warning:
Processor disabled warning


Cause: processorenabled setting is false
Solution:

  1. Navigate to Settings
  2. Enable processor
  3. Or set via SQL:
UPDATE tblVideoSettings SET settingvalue = '1' WHERE settingkey = 'processorenabled';

 

Performance Tips

 

Tip:
If the queue gets very large:
  1. Increase maxconcurrentjobs setting
  2. Run processor more frequently
  3. Archive old completed jobs
  4. Consider distributed processing (Phase 10)

 


Color Reference

Column Headers

Column Background Border
Processing #e8f4fd #3498db
High Priority #fdf2f2 #e74c3c
Medium Priority #fefbf3 #f39c12
Low Priority #f8f9fa #95a5a6

Job Cards

Status Background
Normal #ffffff
Has Error #fff5f5 (light red)
Processing #f0f8ff (light blue)

Priority Badges

Level Color
8-10 (High) #e74c3c (red)
5-7 (Medium) #f39c12 (yellow)
1-4 (Low) #95a5a6 (gray)

Translatable Strings

The following strings should be added to backendtranslations.md:

videoqueuevisualizertitle = "Video Processing Queue Visualizer"
videoqueuevisualizerbreadcrumb = "Queue Visualizer"
videoqueuevisualizersubtitle = "Visual queue management with priority columns"
videoqueuevisualizerbacktodashboard = "Back to Dashboard"
videoqueuevisualizersettings = "Settings"
videoqueuevisualizerrefresh = "Refresh"
videoqueuevisualizerautorefresh = "Auto-refresh"
videoqueuevisualizertotalpending = "Total Pending"
videoqueuevisualizerprocessing = "Processing"
videoqueuevisualizercompleted24h = "Completed (24h)"
videoqueuevisualizerfailed = "Failed"
videoqueuevisualizermaxconcurrent = "Max Concurrent"
videoqueuevisualizertimeout = "Timeout"
videoqueuevisualizerprocessorstatus = "Processor Status"
videoqueuevisualizerdefaultpriority = "Default Priority"
videoqueuevisualizerenabled = "Enabled"
videoqueuevisualizerdisabled = "Disabled"
videoqueuevisualizercurrentlyprocessing = "Currently Processing"
videoqueuevisualizerhighpriority = "High Priority"
videoqueuevisualizermediumpriority = "Medium Priority"
videoqueuevisualizerlowpriority = "Low Priority"
videoqueuevisualizerpriority = "Priority"
videoqueuevisualizercancel = "Cancel"
videoqueuevisualizerselectall = "Select All"
videoqueuevisualizercancelselected = "Cancel Selected"
videoqueuevisualizersetpriority = "Set Priority"
videoqueuevisualizercurrentpriority = "Current Priority"
videoqueuevisualizernewpriority = "New Priority"
videoqueuevisualizersave = "Save"
videoqueuevisualizercancelbtn = "Cancel"
videoqueuevisualizerlow = "Low"
videoqueuevisualizermedium = "Medium"
videoqueuevisualizerhigh = "High"
videoqueuevisualizerwaittime = "Wait"
videoqueuevisualizerattempts = "Attempts"
videoqueuevisualizernojobs = "No jobs in this column"
videoqueuevisualizerjobtypesextract = "Extract Metadata"
videoqueuevisualizerjobtypestranscode = "Transcode"
videoqueuevisualizerjobtypesthumbnails = "Thumbnails"
videoqueuevisualizerjobtypessprites = "Sprites"
videoqueuevisualizerjobtypespreview = "Preview"
videoqueuevisualizerjobtypesgif = "GIF"
videoqueuevisualizerjobtypescontact = "Contact Sheet"
videoqueuevisualizerjobtypescdn = "CDN Upload"
videoqueuevisualizerjobtypescleanup = "Cleanup"
videoqueuevisualizerconfirmcancel = "Are you sure you want to cancel this job?"
videoqueuevisualizerconfirmbulkcancel = "Cancel {count} selected jobs?"
videoqueuevisualizerpriorityupdated = "Priority updated successfully"
videoqueuevisualizerjobcancelled = "Job cancelled"
videoqueuevisualizererrorupdate = "Error updating priority"
videoqueuevisualizererrorcancel = "Error cancelling job"

Version History

Version Date Changes
1.0 2024-10 Initial release with column layout
1.1 2024-11 Added priority modal with slider
1.2 2024-12 Added bulk cancel functionality
1.3 2025-01 Added auto-refresh with countdown