Update Saqel Platform: 2026-09-02 08:20:41
This commit is contained in:
@@ -506,7 +506,13 @@ class CurriculumStudio
|
||||
const raw = await res.text();
|
||||
let data;
|
||||
try { data = JSON.parse(raw); }
|
||||
catch (_) { throw new Error(`HTTP ${res.status}: ${raw.slice(0, 240) || 'استجابة غير مفهومة من السيرفر'}`); }
|
||||
catch (_) {
|
||||
const plain = raw.replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim();
|
||||
if (res.status === 413) {
|
||||
throw new Error('حجم الفيديو أكبر من الحد المسموح في Nginx. ارفع client_max_body_size إلى 512M أو أكثر.');
|
||||
}
|
||||
throw new Error(`HTTP ${res.status}: ${plain.slice(0, 240) || 'استجابة غير مفهومة من السيرفر'}`);
|
||||
}
|
||||
if (res.ok && data.status === 'processing') {
|
||||
currentUploadTaskId = data.task_id;
|
||||
statusSpan.textContent = data.message || '⏳ تم استلام الفيديو، جاري تحويله ورفعه إلى Cloudflare...';
|
||||
|
||||
@@ -44,3 +44,5 @@
|
||||
مجلدات R2 القديمة مثل `hls/0` و`hls/1` و`hls/4` ليست فهرس الدروس؛ المرجع المعتمد هو قاعدة البيانات و`curriculum_key`، لذلك لا تُحذف قبل ترحيلها والتحقق من كل درس.
|
||||
|
||||
بعد نشر الكود يجب أن يكون عامل PHP قادرًا على الكتابة إلى `backend/storage/curriculum/processing` و`backend/storage/videos` و`backend/storage/hls`، وأن يكون FFmpeg مثبتًا على الخادم. وللفيديوهات الكبيرة يجب ضبط `upload_max_filesize` و`post_max_size` في PHP و`client_max_body_size` في Nginx بما يتجاوز حجم أكبر فيديو.
|
||||
|
||||
إذا ظهر `HTTP 413 Request Entity Too Large` فهذا يعني أن Nginx رفض الملف قبل وصوله إلى PHP. في CloudPanel ارفع `client_max_body_size` إلى `512M` أو أكثر، وارفع `upload_max_filesize` و`post_max_size` في إعدادات PHP-FPM، ثم أعد تشغيل/Reload خدمة Nginx وPHP-FPM. لا تعالج 413 من كود التطبيق لأنه يحدث قبل تشغيل الـ API.
|
||||
|
||||
Reference in New Issue
Block a user