الرئيسية
» مسؤول الشبكة
»
حل مشكلة توقف تحميل الملفات على ownCloud عند 99%: دليل عملي لحل المشكلات
حل مشكلة توقف تحميل الملفات على ownCloud عند 99%: دليل عملي لحل المشكلات
عادةً، لا يُحلّ توقف عملية تحميل الملفات على ownCloud عند وصولها إلى 99% بإعادة تشغيلها مرارًا وتكرارًا. ففي هذه الحالة، قد يكون المتصفح قد نقل معظم الملف أو كله، بينما لا يزال الخادم يُكمل عمليات مثل استلام الجزء الأخير، وتجميع الأجزاء، ونقل الملف المكتمل إلى وجهته، وتحديث البيانات الوصفية، أو تحرير الأقفال. ولا تُحدد النسبة المئوية وحدها سبب المشكلة، لذا فإن أسرع طريقة هي فحص الأدلة من جانب الخادم بترتيب مُحدد.
يستند هذا الدليل إلى وثائق إدارة خادم ownCloud 11.0 الحالية، والمتوفرة في أكتوبر 2026. تنطبق الأفكار نفسها على العديد من عمليات نشر ownCloud Classic، ولكن قد تختلف مسارات التكوين وسلوك Docker في الإصدارات الأقدم. قبل تغيير الحدود، تأكد من إصدارك المُثبّت وطريقة النشر.
قد يظهر الملف عالقًا عند 99% رغم نقل معظم البيانات. اعتبر هذه النسبة مؤشرًا على وجود مشكلة، ثم تحقق من الأدلة الموجودة على الخادم.
قائمة فحص التشخيص السريع
ما الذي يجب فحصه؟
لماذا يُعد ذلك مهماً؟
دليل قوي
سجلات ownCloud وPHP وخادم الويب
قد يحدث العطل بعد أن ينتهي المتصفح من إرسال البيانات.
حدث خطأ في وقت التحميل، أو في التخزين، أو WebDAV، أو في القفل، أو خطأ من نوع 5xx، أو خطأ في الأذونات.
مساحة تخزين مؤقتة ومساحة خالية من مجلد التحميل
تحتاج عمليات التحميل المجزأة إلى تخزين مؤقت قبل إتمامها.
تفشل الملفات الكبيرة بينما تعمل الملفات الصغيرة، أو يكون نظام الملفات ممتلئًا تقريبًا.
حصة المستخدم ومساحة التخزين الوجهة
لا يزال الملف النهائي بحاجة إلى مساحة في وجهته.
يحدث الفشل لمستخدم واحد أو مجلد واحد أو هدف تخزين خارجي واحد فقط.
حدود تحميل PHP والوقت
يمكن رفض الطلبات غير المجزأة والطلبات الداعمة أو تجاوز مهلة الاستجابة.
تشير الأخطاء إلى حجم الطلب، أو وقت التنفيذ، أو وقت الإدخال، أو ملفات التحميل المؤقتة.
مدة الجلسة
قد تؤدي الجلسة التي تنتهي صلاحيتها قبل اكتمال عملية التحميل الطويلة إلى مقاطعة عملية الإكمال.
ترتبط حالات الفشل بمدة التحميل وليس بنوع الملف.
خادم وكيل عكسي، أو شبكة توصيل المحتوى (CDN)، أو موازن الأحمال
يمكن للمكون الموجود في المصدر أن يفرض حدًا خاصًا به لحجم الجسم أو مهلة الانتظار.
يعمل الوصول المباشر، لكن اسم المضيف العام عبر الوكيل يفشل.
قفل الملفات المعاملاتية
يقوم نظام ownCloud بقفل الملفات أثناء تنفيذ عمليات الملفات.
تحتوي السجلات على أخطاء في عملية القفل، خاصة تحت الضغط أو على وحدات التخزين المجمعة.
1. قم بإعادة إنتاج المشكلة مرة واحدة، ثم افحص السجلات على الفور
قم بتحميل ملف واحد مُتحكم به يُعيد إنتاج المشكلة بشكل موثوق، وسجّل الوقت بدقة. ثم افحص سجلات ownCloud وPHP وسجلات أخطاء خادم الويب في ذلك الوقت. لا تُجرِ تغييرات متعددة في الإعدادات أولاً؛ لأن ذلك يُصعّب تحديد الطبقة التي فشلت فعلياً.
توصي وثائق استكشاف الأخطاء وإصلاحها الرسمية لـ ownCloud صراحةً بالتحقق أولاً من سجلات PHP وApache وownCloud. في عملية نشر Docker القياسية، توضح ownCloud أن مخرجات Apache وPHP تُوجَّه عبر stdout/stderr الخاص بالحاوية، وتقترح متابعة سجلات الحاوية باستخدام docker compose logs owncloud -f...
يُعد عرض سجل الإدارة أحد الأماكن التي يمكن من خلالها جمع الأدلة قبل تغيير حدود التحميل.
يمكنك أيضًا الحصول على سجل ownCloud من واجهة الإدارة. يوثق سجل ownCloud ودليل التكوين المسار عبر الإعدادات > الإدارة > عام، ويوفر occ configreport:generateخيارًا عند الحاجة إلى تقرير تكوين أكثر تفصيلًا.
ما هي رسائل السجل التي يجب عليك البحث عنها؟
ركّز على الخطأ الأول المرتبط بالطلب الفاشل، وليس على كل تحذير يليه. تشمل الفئات المفيدة: مهلة الطلب، وعدم كفاية مساحة التخزين، وعدم القدرة على إنشاء ملف مؤقت أو إعادة تسميته، وأخطاء الأذونات، واستثناءات WebDAV، واستجابات HTTP 413/502/504، وفشل قفل الملفات. إذا رفعتَ مستوى تسجيل ownCloud مؤقتًا إلى DEBUG، فأعده إلى المستوى الطبيعي بعد ذلك؛ إذ تُشير ownCloud إلى أن التسجيل المُفصّل قد يؤثر على أداء الخادم. راجع مرجع تكوين التسجيل الرسمي .
اقرأ سجلات النظام من وقت فشل التحميل بالضبط. الرسائل المعروضة هنا توضيحية فقط؛ قم بالتشخيص من سجلات خادمك الفعلية.
2. تحقق من المساحة الحرة في كل من المواقع المؤقتة ومواقع التخزين النهائية
يُعدّ هذا أحد أهمّ إجراءات التحقق لضمان اكتمال التحميل بنسبة 99%. يشرح خادم ownCloud 11.0 أنّه يُمكن استخدام أكثر من مساحة تخزين مؤقتة للتحميلات. يجب أن يحتوي دليل التحميل المؤقت الخاص بـ PHP على مساحة كافية للأجزاء النشطة، بينما يقوم دليل تحميل المستخدم بتجميع أجزاء الملف حتى اكتمال التحميل.
بحسب وثائق تحميل الملفات الكبيرة في ownCloud ، ينبغي التخطيط لمساحة PHP المؤقتة تقريبًا على أساس عدد عمليات التحميل المتزامنة مضروبًا في حجم الجزء. والأهم من ذلك، بالنسبة لملف واحد كبير، يحتاج مجلد التحميل الخاص بالمستخدم مؤقتًا إلى مساحة تُقارب حجم الملف النهائي، لأنه يحتفظ بالأجزاء حتى اكتمال التجميع. بمجرد انتهاء التحميل، يكتب ownCloud الأجزاء إلى الوجهة النهائية ثم يحذفها.
تحقق من المساحة الحرة على أنظمة الملفات التي تحتوي على دليل بيانات ownCloud، ودليل PHP المؤقت، وأي دليل مخصص لتحميل الأجزاء.
تحقق من نظام الملفات الذي يحتوي على مجلد البيانات، ومجلد PHP المؤقت، وأي موقع مُهيأ عبر الإعدادات OWNCLOUD_DAV_CHUNK_BASE_DIR. تحقق أيضًا من الوجهة الفعلية، خاصةً إذا كانت الوجهة وحدة تخزين خارجية. قد يتوفر على الخادم مساحة تخزين كافية /بينما تكون وحدة تخزين بيانات منفصلة ممتلئة.
لا تقم بنقل الملفات يدويًا من أو إلى مجلد بيانات ownCloud لإنهاء عملية التحميل. يحذر ownCloud من أن مجلد بياناته خاص بالتطبيق فقط؛ وقد تؤدي التعديلات المباشرة عليه إلى حدوث تناقضات في المزامنة وقاعدة البيانات.
3. تأكيد الحصة قبل زيادة الحدود التقنية
قد تمنع حصة المستخدم تحميل ملف نهائي كبير حتى لو كانت مساحة التخزين المؤقتة للتحميل كافية. تحقق من حصة المستخدم المتأثر، وإذا لزم الأمر، تحقق من سعة وصلاحيات وحدة التخزين الخارجية. من المفيد اختبار تحميل الملف نفسه إلى حساب أو وجهة أخرى ذات مساحة كافية. إذا كان سبب المشكلة هو المستخدم أو المجلد وليس الملف نفسه، فإن الحصة أو سياسة التخزين هي السبب الأرجح.
4. مراجعة إعدادات رفع الملفات في PHP و ownCloud
إذا أشارت السجلات إلى حدود حجم الطلب أو التنفيذ، فراجع إعدادات PHP الفعلية بدلاً من افتراض أن القيم الموجودة في php.iniملف عشوائي مُفعّلة. تتضمن التوجيهات الشائعة ما يلي post_max_size: upload_max_filesizeو و upload_tmp_dirو max_input_timeو max_execution_timeو و memory_limit.
لا ينبغي تغيير حدود PHP إلا عندما تُظهر السجلات أو الإعدادات الفعلية أنها تُقيّد عملية التحميل. القيم المعروضة هنا هي أمثلة وليست توصيات عامة.
بالنسبة لتكوين خادم ownCloud 11.0 المدعوم بتقنية Docker، تربط الوثائق هذه المتغيرات بمتغيرات البيئة: OWNCLOUD_MAX_UPLOADو OWNCLOUD_TEMP_DIRECTORYو OWNCLOUD_MAX_INPUT_TIMEو OWNCLOUD_MAX_EXECUTION_TIMEو OWNCLOUD_MEMORY_LIMIT. وهذا مهم لأن ownCloud تنص على أن عمليات النشر التي تستخدم تكوين Docker الخاص بها يجب أن تستخدم متغيرات البيئة المُقدمة بدلاً من الاعتماد على .htaccessأنماط PHP القديمة أو أنماط التخصيص.
في عمليات نشر Docker، احتفظ بإعدادات التحميل ضمن تكوين متغيرات البيئة المدعومة، وتأكد من أن وحدة التخزين المؤقتة المُثبّتة لديها سعة كافية. القيم المعروضة هي قيم توضيحية فقط.
لا تكتفِ بتحديد كل حد برقم كبير للغاية. الأفضل هو تحديد قيمة تتناسب مع أقصى حجم ملف ترغب في استخدامه وأبطأ اتصال قانوني، مع الحفاظ على إجراءات الحماية التشغيلية.
5. تحقق من مدة الجلسة لتحديد حالات التحميل البطيء
يحذر ownCloud تحديدًا من أن session_lifetimeمدة التحميل يجب ألا تقل عن أطول مدة تحميل متوقعة. إذا كنت قد خصصتها، فاضبطها على الأقل على عدد الثواني اللازمة لأبطأ مدة تحميل متوقعة، أو احذف القيمة المخصصة غير الضرورية وعد إلى السلوك الافتراضي المدعوم.
يجدر التحقق من ذلك بشكل خاص عندما ينتهي ملف بحجم 500 ميجابايت ولكن ملف بحجم عدة جيجابايت يفشل بشكل متكرر بعد نفس المدة الزمنية تقريبًا.
6. اختبر الخادم الوكيل العكسي أو شبكة توصيل المحتوى (CDN) بشكل منفصل
تشير وثائق الملفات الكبيرة الخاصة بـ ownCloud إلى أن خوادم البروكسي من جانب العميل وخدمات مثل Cloudflare قد تقيّد عمليات التحميل. وهذا يعني أن حزمة ownCloud/PHP المُهيأة بشكل مثالي قد تفشل مع ذلك لأن وسيطًا آخر يحدّ من حجم بيانات الطلب، أو يخزن طلبًا طويلًا مؤقتًا، أو يغلق اتصالًا غير نشط، أو ينتهي وقته أثناء قيام ownCloud بتجميع الملف المراد تحميله.
إذا كانت بنية نظامك تسمح بإجراء اختبار إداري آمن، قارن عملية التحميل نفسها عبر المسار العام المعتاد وعبر مسار يتجاوز الخادم الوكيل العكسي أو شبكة توصيل المحتوى (CDN). إذا نجح المسار المباشر، فراجع الوثائق الرسمية للوسيط لمعرفة حجم الطلب، ومهلة التحميل، والتخزين المؤقت، وسلوك WebDAV. لا تُضعف بروتوكول TLS أو تُعرّض الواجهة الخلفية للعلن لمجرد إجراء هذا الاختبار.
يمكن لخادم الوكيل العكسي أو خادم الويب فرض مهلة زمنية خاصة به. استخدم هذا كتذكير فقط لفحص تلك الطبقة؛ إذ تعتمد أسماء التوجيهات والقيم الآمنة على بنية خادمك الفعلية.
7. تحقق من قفل الملفات عند فشل التحميل أثناء عملية الإنهاء
يتم تفعيل خاصية قفل الملفات للمعاملات افتراضيًا، وهي تحمي الملفات من التعديل المتزامن. تشير وثائق ownCloud إلى أهمية هذه الخاصية أيضًا عند تجميع عمليات التحميل المجزأة. على الخوادم المشغولة، قد تظهر مشكلة القفل على شكل عملية نقل اكتملت ولكن لم يتم حفظها بشكل صحيح.
راجع وثائق تأمين الملفات للمعاملات قبل تغيير هذا النظام الفرعي. توصي ownCloud باستخدام ذاكرة تخزين مؤقتة خلفية لتأمين أحمال العمل الثقيلة بدلاً من الاعتماد على تأمين قاعدة البيانات. في عمليات النشر المجمعة، يُعد تأمين Redis المشترك بالغ الأهمية لأن كل عقدة تطبيق يجب أن ترى حالة التأمين نفسها.
توجد أيضًا حالة خاصة موثقة لعمليات التحميل الطويلة جدًا إلى المجلدات العامة عندما لا يكون تقسيم الملفات مُفعّلاً. تشير ownCloud إلى أن عمليات التحميل التي تستغرق أكثر من ساعة قد تتطلب حجمًا كبيرًا بما يكفي OWNCLOUD_FILELOCKING_TTL؛ وإلا فقد تقوم عملية جمع البيانات المهملة في Redis بإزالة القفل الذي تم الحصول عليه في بداية العملية. لا تُغيّر هذا الإعداد إلا إذا كان مسار التحميل الخاص بك يتطابق مع هذا السيناريو.
8. أعد الاختبار بشكل منهجي بعد كل تغيير
بعد كل تغيير من جانب الخادم، قم بتكرار ملف اختبار معروف واحد وسجل النتيجة بدلاً من تغيير عدة طبقات في وقت واحد.
بعد تصحيح إحدى المشكلات المحددة، أعد المحاولة باستخدام نفس الملف والحساب والوجهة والمتصفح ومسار الشبكة. ثم تحقق من ثلاثة أمور: اكتمال عملية التحميل، وظهور الملف في الوجهة بالحجم المتوقع، وعدم وجود خطأ جديد في سجلات النظام لهذا الطلب.
يُعدّ التدرّج المفيد هو البدء بملف صغير، ثم ملف متوسط الحجم، وأخيرًا الملف الذي فشل في البداية. إذا نجحت عمليات الوصول إلى الملفات الصغيرة دائمًا، ولكن بدأت حالات الفشل عند حجم أكبر من حجم قابل للتكرار، فركّز على سعة التخزين وحدود الحجم. إذا بدأت حالات الفشل بعد مدة زمنية قابلة للتكرار، فركّز على الجلسات ومهلات انتهاء الصلاحية. إذا حدثت هذه الحالات فقط عبر اسم مضيف واحد أو مسار شبكة واحد، فركّز على الخوادم الوكيلة وموازنات الأحمال.
ما لا يجب فعله
لا تُعاود محاولة تحميل ملفات بحجم عدة غيغابايت دون مراجعة سجلات النظام. فإعادة تحميل أجزاء البيانات الفاشلة بشكل متكرر يُهدر الوقت وقد يُؤدي إلى استهلاك مساحة تخزين مؤقتة.
لا تقم بتعديل دليل بيانات ownCloud يدويًا. استخدم ownCloud أو WebDAV أو أدوات الإدارة المدعومة.
لا تقم بتعطيل قفل الملفات كحل أولي. فالقفل يحمي سلامة البيانات؛ بدلاً من ذلك، قم بتشخيص النظام الخلفي.
لا تفترض أن إعداد PHP فعال لمجرد ظهوره في ملف تكوين واحد. فالحاويات، وPHP-FPM، ووحدات Apache، ومواقع ملفات INI المتعددة قد تُنتج إعدادات فعالة مختلفة.
لا تقم بتمديد مهلة كل طلب إلى أجل غير مسمى. حدد الطبقة التي تغلق الطلب وقم بتعيين حد مناسب لأقصى حجم تحميل مدعوم.
مسار القرار العملي
إذا كنت بحاجة إلى دليل تشغيل مختصر، فاتبع هذا الترتيب: أعد إنتاج المشكلة مرة واحدة؛ اقرأ سجلات ownCloud/PHP/خادم الويب؛ تحقق من تخزين البيانات، والتخزين المؤقت، وتخزين الأجزاء؛ تحقق من الحصة المخصصة؛ تأكد من صحة إعدادات التحميل والوقت؛ افحص مدة الجلسة؛ تجاوز أو افحص الخادم الوكيل العكسي/شبكة توصيل المحتوى (CDN)؛ ثم ابحث في تأمين المعاملات. يُفضل هذا الترتيب الأدلة وقيود البنية التحتية ذات الاحتمالية الأعلى قبل إجراء تغييرات تكوين محفوفة بالمخاطر.
التفصيل المهم هو أن نسبة "99%" ليست بحد ذاتها رمز خطأ. إنها تُشير إلى مكان ملاحظة المستخدم للمشكلة، وليس إلى المكون الذي تسبب بها. ويكمن الحل الموثوق في مطابقة الطابع الزمني لعملية التحميل الفاشلة مع بيانات التخزين، أو انتهاء المهلة، أو الخادم الوكيل، أو الجلسة، أو بيانات القفل على الخادم.