Laravel-excel: لماذا تستغرق الصادرات في قائمة الانتظار الكثير من الوقت؟

تم إنشاؤها على ٢ يوليو ٢٠٢٠  ·  7تعليقات  ·  مصدر: Maatwebsite/Laravel-Excel

المتطلبات الأساسية

إصدارات

  • إصدار PHP:7.1.3
  • إصدار Laravel:5.8
  • إصدار الحزمة:3.1

وصف

لقد كنت أستخدم هذه الحزمة منذ أكثر من عام الآن. بدأت مؤخرًا أواجه مشكلات في الذاكرة والأداء. يحاول المستخدمون تنزيل الكثير من البيانات ؛ في بعض الأحيان بيانات تاريخية. لذلك قرأت المستندات ووجدت قسم الانتظار. في البداية ، كان الحل الأمثل. مع عمليات التصدير في قائمة الانتظار ، يتم إرسال مهام متعددة لإنشاء الملف بواسطة أجزاء. لكنني لاحظت شيئًا. استغرقت كل مهمة (AppendQueryToSheet) تم إرسالها وقتًا أطول للانتهاء من سابقتها. واستغرقت المهمة النهائية (CloseSheet) مزيدًا من الوقت للانتهاء.

سؤالي هو: ¿هل هذه هي الطريقة التي يعمل بها التصدير في قائمة الانتظار؟ أم هل فاتني شيء؟

معلومة اضافية

أنا أستخدم Redis و Horizon. حتى أنني حاولت مع العديد من العمال ولكن يبدو أنه في كل مرة تنتهي فيها وظيفة ، يتم إرسال وظيفة جديدة. لذلك ، لم يحل مشكلتي.

لقد أرفقت هذه الصورة حتى تتمكن من مشاهدة الأوقات المسجلة.

Selection_007

question

التعليق الأكثر فائدة

يجب على كل استعلام إعادة فتح ملف جدول البيانات الذي يستغرق بعض الوقت في PhpSpreadsheet ، لذلك يزداد بالفعل كل إلحاق.

لدي بعض التغييرات المخطط لها في 3.2 والتي ستعمل على تحسين ذلك.

ال 7 كومينتر

يجب على كل استعلام إعادة فتح ملف جدول البيانات الذي يستغرق بعض الوقت في PhpSpreadsheet ، لذلك يزداد بالفعل كل إلحاق.

لدي بعض التغييرات المخطط لها في 3.2 والتي ستعمل على تحسين ذلك.

أواجه نفس المشكلة هنا. أحجام الملفات ليست ضخمة أيضًا ، فقط 5-10 ميغا بايت. لا أعاني من أي طفرات في استخدام وحدة المعالجة المركزية أو الذاكرة.

قررت إنشاء خدمة باستخدام الثعبان والباندا وقد تحسنت كثيرًا ، وأعني الكثير. يعد Laravel Excel مكتبة ممتازة ولكن أعتقد أن هذه الوظيفة ربما لا تكون الأداة المناسبة

@ okmkey45 لكي نكون منصفين ، هذا ليس خطأ Laravel Excel حقًا ، فهو يعتمد على PHPSpreadsheet وهو مكتبة غير فعالة لقراءة / كتابة الملفات. إنه لأمر مخز لأن التجريدات حول تقسيم الاستعلامات ووظائف الانتظار في قائمة الانتظار مفيدة حقًا هنا ، وتوفر لي الكثير من الوقت في كتابة خدمة في Go / Python وربطها بقائمة الانتظار الخاصة بي.

هناك عدد غير قليل من البدائل لجداول بيانات PHPS التي تكون أسرع بكثير على الملفات الكبيرة ، ربما يمكن تبديلها عندما نستخدم ->queue أو ShouldQueue ؟

aakarim هذا شيء أفكر فيه بالفعل ، لكن ليس لدي الوقت أو حالة الاستخدام حاليًا لتنفيذ ذلك. سأكون منفتحًا على العلاقات العامة طالما أنها ستبقى بسيطة وقابلة للاشتراك.

سآخذ حفلة بعد هذا الموعد النهائي. هل هناك أي باقات تفضل / تنصح بهاpatrickbrouwers؟ يبدو https://github.com/box/spout مكانًا جيدًا للبدء.

aakarim نعم مربع / صنبور. لقد فكرت حتى في إتاحة إمكانية استخدام league / csv إذا كنت تريد فقط csv ، فهذا هو الخيار الأسرع إلى حد بعيد لعمليات الاستيراد / التصدير الكبيرة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات