قم بتنزيل عدد كبير من الصور إلى الخادم الخاص بي وإخلاص المستخدم عند الانتهاء من التنزيل
-
18-09-2019 - |
سؤال
أريد تنزيل كمية كبيرة من الملفات إلى خادمي. لدي قائمة بملفات مختلفة للتحميل والمواقع التي تضعها. هذه ليست مشكلة، يمكنني استخدام 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 الخاص بك حتى يكمل الأمر الخارجي. بمجرد اكتماله، يمكنك صدى اسم الملف المكتمل.