حليقة مثل مدير تحميل مع عدة اتصالات تقدم عرض في PHP

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

  •  06-07-2019
  •  | 
  •  

سؤال

أردت أن استخدام حليقة امتداد PHP لخلق نوع من مدير تحميل و كنت أفكر إذا حليقة يسمح لتنفيذ هذه الميزات 2 أفكر:

1) اتصالات متعددة أو متعددة تحميل جزء فقط مثل تطبيقات سطح المكتب العادية مدير تحميل.

2) تحديث باستمرار على الشاشة (نص أو رسوم بيانية, لا يهم) التحميل التقدم.

لا حليقة PHP يسمح بأي من هذا ؟ إذا كان الأمر كذلك ، إلى توفير بعض تلميحات ؟

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

المحلول

ووcurl_multi_xyz () وظائف، مثل curl_multi_exec() تسمح لك لمعالجة متعددة طلبات في نفس الوقت. كما نلقي نظرة على CURLOPT_RANGE إذا كنت ترغب في تحميل segements متعددة من نفس الملف في موازى. وظائف الاستدعاء يمكنك تعيين مع CURLOPT_READFUNCTION و <لأ href = "HTTP: / /docs.php.net/function.curl-setopt "يختلط =" نوفولو noreferrer "> CURLOPT_WRITEFUNCTION سيسمح لك بإرسال نوع من البيانات التقدم إلى العميل.

نصائح أخرى

إلى كل "PHP ليست كبيرة متعددة المهام" النقاد:

اتخاذ خطوة إلى الوراء والنظر في أن يكون لديك رهيبة خاصية تعدد الإطار تحت تصرفكم اذا كنت في مصباح البيئة.استخدام هذه القاعدة العمارة لصالحك - أيApache هو متعدد خيوط manager - وهي جيدة في ذلك.

فمن السهل جدا أن الإعداد PHP للعمل في هذه البيئة.

  1. مجموعة max_execution_time = 0 السماح البرامج النصية تشغيل indefinatly
  2. مجموعة ignore_user_abort = true السماح البرامج النصية تشغيل حتى بعد العميل لديه إحباط

تصميم خفيف الوزن وحيد المهمة بقية الخدمات على شبكة الإنترنت.تصميم لهم في مثل هذه الطريقة التي كنت لا تهتم عندما يعودون مثل في طابور نوع النظام.كتابة انتظار مؤشر الترابط-الآمن ثم إزالة من قائمة انتظار مؤشر الترابط-الآمن إذا فعلت مع بعض التشغيل الأساسي على مستوى mutexes.

"التفرع" خدمات ويب بسيطة مثل فتح الملف:

fclose(fopen("http://somewebservice....php?a1=v1&a2=v2&....")); // Launch a web service and continue...

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

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

في كثير من الأحيان عندما يفكر المطور "متعددة الخيوط" يعتقدون "OMG يجب أن تحمل الشوك و المدراء و ينتظر و PIDs".و إذا كنت تصميم النظام الخاص بك بهذه الطريقة أنت على حق, فإنه يحصل معقدة جدا جدا بسرعة.خطوة الى الوراء واستخدام ما يعطى.كنت قد حصلت على الوصول إلى الدلائل ؟ بوم - كنت قد حصلت على قوائم الانتظار.يمكنك إصدار ويب المكالمات ؟ الازدهار لديك متعددة الخيوط (توزيع) التطبيق.الآن فقط دمج مفاهيم معا التطبيق الخاص بك يملي.

وPHP ليس متعددة الخيوط، وإذا كنت في محاولة لإجبارها على هذا النحو عن طريق المكالمات الملفات المتعددة أو التفرع، فإن النتائج عادة ما تكون دون المستوى الأمثل. أود أن أقترح على هذا، ومع ذلك، كان من الممكن أن تفعل شيئا من هذا القبيل مع مزيج من شبيبة، ووردبريس (ربما لا حليقة ولكن على الرغم من فب مخصصة <لأ href = "http://us.php.net/stream" يختلط = "نوفولو noreferrer"> ملف تيار )، و الاقتراع

وهذا ممكن، نلقي نظرة إلى curl_multi_init ()؛

لا، هذا ليس الحال. وليس من الممكن لمدير التحميل يدعو الفئة التي يتعامل تحميل 5 مرات - وهذا هو مثيل فئة PHP.

وهذه دعوة الطبقة عينة:

$tr = new teConnections();
$data = $tr->downloadManager(array('http', 'host', path', 'login', 'pass', 'port'), 'file name, compression, streaming); 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top