سؤال

هل يدعم PHP شيئًا مثل Ampersand في Bash (Forking)؟ دعنا نقول أنني أردت استخدام حليقة على صفحتين ويبان بشكل متزامن ، لذلك لا يتعين على البرنامج النصي الانتظار قبل أن يكون الأمر الأول لاتفاقية Curl ، كيف يمكن للمرء أن يحقق ذلك في PHP؟ شيء من هذا القبيل في باش:

 curl www.google.com &
 curl www.yahoo.com &
 wait
هل كانت مفيدة؟

المحلول

هل يدعم PHP شيئًا مثل Ampersand في Bash (Forking)؟
رقم. انظر الإجابات الأخرى ، على الرغم من أنني أشير إلى أن امتداد PCNTL هو UNIX فقط.

... كيف يمكن للمرء تحقيق ذلك في PHP؟*
يدعم Curl تشغيل تنزيلات متعددة بشكل متزامن.

نصائح أخرى

يمكنك استخدام popen أو proc_open لفتح عملية واتركها تعمل في الخلفية ، ولكن لا يوجد دعم لغوي لعمليات الخلفية مثل bash (التي تم إجراؤها لتشغيل المهام ، على أي حال ؛ تم صنع PHP للأشياء البرمجة النصية).

باستخدام proc_open ، يمكنك بعد ذلك الاستخدام proc_get_status لمعرفة متى يتم إنهاء العمليات. أخشى أنه لا يوجد wait ما يعادل.

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

غالبًا ما يكون نوعًا من آلية قائمة الانتظار هو الأفضل. Gearman هي آلية قائمة انتظار مفتوحة المصدر يمكنك استخدامها. لديّ أيضًا منشور مدونة على قائمة انتظار وظيفة Zend Server التي تتحدث عن تشغيل المهام بشكل غير متزامن هل تصطف؟ مقدمة في قائمة انتظار وظيفة Zend Server.

يمكنك أيضًا استخدام شيء مثل فصول قائمة انتظار Zend Framework لتنفيذ بعض الأعمال غير المتزامنة. Zend_queue

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