38 lines
1.7 KiB
PHP
38 lines
1.7 KiB
PHP
<?php
|
|
/**
|
|
* Worker simple para reintentar descargas de media fallidas (opcional)
|
|
* Revisa la tabla media_queue (si existe) e intenta procesar
|
|
*/
|
|
require_once __DIR__ . '/../config/config.php';
|
|
require_once __DIR__ . '/../classes/MediaService.php';
|
|
$db = Database::getInstance();
|
|
$rows = $db->fetchAll('SELECT * FROM media_queue WHERE status = ? ORDER BY created_at ASC LIMIT 10', ['pending']);
|
|
$ms = new MediaService();
|
|
foreach ($rows as $r) {
|
|
try {
|
|
$res = null;
|
|
if (!empty($r['media_id'])) {
|
|
$res = $ms->fetchAndStoreFromGraph($r['media_id'], $r['subdir'] ?? date('Y/m'));
|
|
} elseif (!empty($r['media_url'])) {
|
|
$res = $ms->fetchAndStoreFromUrl($r['media_url'], $r['subdir'] ?? date('Y/m'));
|
|
}
|
|
|
|
if ($res) {
|
|
// Actualizar fila media_queue
|
|
$db->update('media_queue', ['status' => 'done', 'result' => json_encode($res)], 'id = :id', ['id' => $r['id']]);
|
|
// Actualizar conversations si tenemos conversation_id
|
|
if (!empty($r['conversation_id'])) {
|
|
$update = [];
|
|
if (!empty($res['local_file'])) $update['local_file'] = $res['local_file'];
|
|
if (!empty($res['local_thumb'])) $update['local_thumb'] = $res['local_thumb'];
|
|
if (!empty($update)) {
|
|
$db->update('conversations', $update, 'id = :id', ['id' => $r['conversation_id']]);
|
|
}
|
|
}
|
|
}
|
|
} catch (Exception $e) {
|
|
$db->update('media_queue', ['status' => 'failed', 'result' => json_encode(['error' => $e->getMessage()])], 'id = :id', ['id' => $r['id']]);
|
|
}
|
|
}
|
|
echo "Processed " . count($rows) . " jobs\n";
|