سؤال

أنا أركض /usr/bin/perl أو /usr/bin/php عبر NSTASK وترغب في استرداد رؤوس HTTP للبرنامج. لقد قمت بتنسيق البيئة بشكل صحيح (Perl يتطلب Enc Vars بادئة HTTP_)، ولكن لم يعد أي من المهمة أي شيء آخر غير المخرجات الخام. لقد كنت من خلال الوثائق حول NSTASK ورجل صفحات PHP و PERL، ولم أر أي طريقة لإجبار إخراج رؤوس HTTP.

أيه أفكار؟

تعديل: أدرك أن هذا سؤال قديم، لكنني أعيد اكتشافها وأدركت أنني يجب أن أبلغ عنها. كانت المشكلة أنني يجب أن أستخدمها php-cli, ، و لا php. وبعد اضطررت إلى تنزيل وتجميعها php-cli من المصدر للحصول على هذا للعمل كما كنت أتوقع. مرة واحدة فعلت، ومع ذلك، فقد عملت مثل سحر. :)

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

المحلول

قد تضطر إلى بادئة الإخراج الخاص بك برأس HTTP، الذي تم بناؤه بواسطتك بناء على الإخراج الخام من البرنامج النصي Perl أو PHP.

على سبيل المثال، أنت تعرف أن الإخراج الخام من البرنامج النصي PHP سيكون من نوع المحتوى: النص / HTML، ويمكنك الحصول على الطول من الإخراج نفسه. على الأقل أعتقد أن هذا ما فعلته عند تنفيذ حلا مماثلا.

نصائح أخرى

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

تحتاج إلى جعل البرنامج النصي PERL أو PHP إخراج بيئته في بعض التنسيق، وقراءة ذلك في عملية الكاكاو من خلال أنبوب.

هل يقوم البرنامج النصي بطباعة الرؤوس عند تشغيله من المحطة؟ إذا كان الأمر كذلك، ربما تستخدم -[NSTask setStandard*:] (ربما باستخدام NSPIPE) يمكن أن تساعد في التقاط الإخراج. إذا لم يكن الأمر كذلك، فمن الممكن أن يقوم خادم الويب بحقن الرؤوس كما يعالج CGI.

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