قم بتنزيل عدد كبير من الصور إلى الخادم الخاص بي وإخلاص المستخدم عند الانتهاء من التنزيل

StackOverflow https://stackoverflow.com/questions/2409318

سؤال

أريد تنزيل كمية كبيرة من الملفات إلى خادمي. لدي قائمة بملفات مختلفة للتحميل والمواقع التي تضعها. هذه ليست مشكلة، يمكنني استخدام WGET لتنزيل الملف، قم بتنفيذ هذا مع Shell_Exec

$command = 'wget -b -O' . $filenameandpathtoput . ' ' . $submission['url'];
shell_exec($command);

يعمل هذا رائعا، يبدأ الخادم جميع مؤشرات الترابط ويتم تنزيل الملفات في أي وقت من الأوقات.

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

اي اقتراحات تكون مفيده!

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

المحلول

أعتقد أنك قادر على التحقق مما إذا كانت جميع الملفات في مكانها مع شيء مثل

function checkFiles ()
{
    foreach ($_SESSION["targetpaths"] as $p)
    {
        if (!is_file($p)) return false;
    }
    return true;
}

الآن كل ما عليك فعله هو استدعاء برنامج نصي على الخادم الخاص بك يستدعي هذه الوظيفة كل ثانية (أو نحو ذلك). يمكنك إما تحقيق ذلك مع تحديث META (إجبار المتصفح على إعادة تحميل الصفحة بعد ثواني N) أو باستخدام AJAX (إلقاء نظرة على JQuery's .getJSON, ، علي سبيل المثال).

إذا تم استدعاء البرنامج النصي ولم يتم تنزيل الملفات بالكامل، فقم بطباعة شيء مثل "الرجاء الانتظار" والتحديث مرة أخرى لاحقا. خلاف ذلك، تظهر رسالة النجاح. هذا كل شئ.

نصائح أخرى

يمكنك التفكير في استخدام exec. لتشغيل الأمر التشغيل الخارجي. سيتم حظر البرنامج النصي PHP الخاص بك حتى يكمل الأمر الخارجي. بمجرد اكتماله، يمكنك صدى اسم الملف المكتمل.

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