سؤال

أنا أبحث عن حلول لعميل محتمل. إنهم يطلبون القدرة على تنزيل كمية كبيرة من MP3 (1000+) من كتالوجهم عبر الإنترنت.

لقد قمت بالبحث/اختبار بناء ZIP يحتوي على جميع mp3 باستخدام Ziparchive ولكن واجهت مشكلات تسرب الذاكرة الواضحة التي استبعد هذا الحل.

أحاول الآن التفكير خارج الصندوق.

كانت إحدى الأفكار هي إنشاء قائمة انتظار FTP أو رابط تنزيل نوع التورنت لهم. هل هناك أي شيء يمكن أن يسحب شيئًا كهذا؟

أي مساعدة أو اتجاه مقترح سيكون موضع تقدير كبير! شكرًا!!

تحرير: هنا هي العملية/الهدف العام الذي نحاول تحقيقه.

يقوم العميل بإنشاء موسيقى لتلفزيون/فليم. إنهم يحافظون على كتالوج عبر الإنترنت ونسخة محلية يرسلونها إلى المشترين المحتملين. يحتاج الكتالوج عبر الإنترنت والكتالوج غير المتصلة إلى عكس بعضهما البعض. المشكلة ، لديهم مكاتب متعددة سيتعين عليها تحديث نسختهم المحلية مع الملفات الجديدة التي تمت إضافتها إلى الكتالوج عبر الإنترنت من العديد من المواقع المختلفة

مثال: يقوم مستخدم الساحل الشرقي بتحديث الكتالوج مع 100 ملف جديد. يحتاج مستخدم الساحل الغربي إلى تحديث الكتالوج غير المتصلة بالإنترنت مع الملفات الجديدة التي تم استردادها من الكتالوج عبر الإنترنت.

كنا نأمل في إنشاء zip مخصصة من الملفات التي يحتاجها كل مستخدم لتحديث الكتالوج الخاص بهم استنادًا إلى سجل تنزيل المستخدم الذي نحافظ عليه في MySQL. كنا نختبر Ziparchive لكننا لم نتمكن من بناء zips أكثر من 175 ميج (أعطي أو أخذ). نحن بصدد اختبار zipsstreaming ولكن لدينا بعض المشكلات.

آمل أن يزيل هذا الهدف العام والمشاكل التي نواجهها.

هل كانت مفيدة؟

المحلول

GNU wget؟ يمكن تنزيل العودية. ما عليك سوى إعطاء WGT قائمة بجميع الملفات على الخادم ، على سبيل المثال http://www.example.org/filelist.html الذي يحتوي على روابط مثل file1.mp3 و file2.mp3 وما إلى ذلك (يقوم Apache عادةً بإنشاء ملف الفهرس تلقائيًا في دليل بدون index.html/php فيه.

http://linux.die.net/man/1/wget

نصائح أخرى

بصراحة ، لا يمكنني تحديد المشكلة/السؤال الفعلي من رسالتك. إذا كنت تبحث عن تقليل تحميل الشبكة ، فأنت بحاجة إلى تذكر أن ملفات MP3 ليست مضغوطة جيدًا لأنها مضغوطة بالفعل (ليس قدر الإمكان ، ولكن حسنًا). إذا كنت تبحث عن نقل ، فسيتم القيام بأي بروتوكول نقل الملفات (FTP ، SFTP ، HTTP ، WebDAV).

إذا كنت بحاجة إلى مرونة وميزات ، فإنني أوصي SFTP: هذا بروتوكول للوصول إلى نظام الملفات عن بُعد ، لذلك إلى جانب تشغيل "Get File" ، يحتوي على الكثير من العمليات المفيدة بما في ذلك قائمة الدليل القابل للقراءة الآلي (غير متوفر دائمًا في FTP وليس متوفر في HTTP القياسي) ، ضغط ZLIB المدمج ، إمكانية مضمنة لاستئناف نقل الملفات والمزيد من المكافآت. يحتوي HTTP أيضًا على ضغط ZLIB ، لكن هذا غير متاح دائمًا.

تحديث: نهجك لا يهتم بما هو هل حقا متوفر على العميل وستقوم بإعداد ملفات zip استنادًا إلى معرفتك (ربما غير صحيحة) للعميل بالفعل.

إذا كان العميل والخادم كلا من التطبيقات التي تقوم بتطويرها ، فيجب عليك استخدام بروتوكول RSYNC أو شيء مشابه لتحديث البيانات عبر الإنترنت (لا تستخدم أي ملفات مضغوطة) وتنزيل الملفات المفقودة على العميل. إذا لم يكن التواصل المباشر بين العميل والخادم غير ممكن ، فيمكنك جعل العميل يرسل حالته إلى الخادم وسيقوم الخادم بإعداد حزمة فردية بعد ذلك. أما بالنسبة لوظائف zip - فهذا مطلوب فقط عند استخدام تحديث الدُفعات (لا يوجد اتصال في الوقت الفعلي بين العميل والخادم). لا أعرف ما هي التكنولوجيا التي تستخدمها ولكن إذا فقط المشكلة مع مكون zip ، يمكنك استخدام شيء آخر لتعبئة البيانات - إما مكون zip مختلف (لـ .NET و VCL لدينا مكون الرمز البريدي) أو بعض حلول التعبئة الأخرى (على سبيل المثال ، لدينا solfs المنتج ليس لديه حدود الحجم). لسوء الحظ ، لست على دراية بتنفيذ يشبه RSYNC المتاح كمكون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top