मेरे पास एक PHP वेब एप्लिकेशन है जिसे C++ लाइब्रेरी में फ़ंक्शन कॉल करने की आवश्यकता है। यह पुस्तकालय एक विक्रेता द्वारा प्रदान किया जाता है (libfoo.a एक लिनक्स मशीन पर)।PHP वेब ऐप से सी ++ लाइब्रेरी को कॉल करना: सिस्टम() बनाम एसडब्ल्यूआईजी PHP एक्सटेंशन?
मेरी पहली वृत्ति एक सी ++ निष्पादन योग्य है कि libfoo.a के खिलाफ लिंक बनाने के लिए है, और कार्य करने के लिए कमांड लाइन पैरामीटर गुजरता है। PHP वेब एप्लिकेशन तब मेरे C++ निष्पादन योग्य को सिस्टम() कॉल कर सकता है। इसे लागू करना आसान होगा। मेरी चिंता यह है कि क्या प्रत्येक कॉल के लिए एक नई प्रणाली प्रक्रिया बनाने के लिए यह बहुत अधिक ओवरहेड जोड़ देगा। यह उपरांत कितना होगा?
एक विकल्प यह है कि मैं PHP एक्सटेंशन में C++ फ़ंक्शन को लपेटने के लिए SWIG का उपयोग कर सकता हूं, लेकिन मेरे पास C++ स्रोत कोड नहीं है। एसडब्ल्यूआईजी समर्थन ".a" पुस्तकालय से जुड़ा हुआ है? क्या libfoo.a में निर्माण करने के लिए अपनी PHP कॉन्फ़िगरेशन बदलने के लिए मेरी टीम पर हर दूसरे इंजीनियर की आवश्यकता होगी?
प्रणाली की भूमि के ऊपर() कॉल छोटे (< 30 एमएस) है, तो मैं, विकल्प # 1 पसंद करेंगे के रूप में यह बहुत सरल लगता है सी ++ निष्पादन एक बार बनाने के लिए, और यह PHP में निर्माण नहीं आवेदन। दो विकल्पों पर आपकी सिफारिशें क्या हैं?
क्या आपको 'सी ++' से आउटपुट की आवश्यकता है? यदि आप कॉल पर पृष्ठभूमि को पुश करने पर विचार नहीं कर सकते हैं - http://stackoverflow.com/questions/45953/php-execute-a-background-process – ajreal
बस एक साधारण बाहरी अवलोकन, लेकिन यह जानने के बिना कि इसे कितनी बार कहा जाएगा, यह लगता है जैसे आप एक C++ निष्पादन योग्य बनाने से बेहतर होंगे (जो कि PHP के बाहर उपयोग के लिए बोनस के रूप में उपयोग करने की अनुमति देगा)। यदि आपने इसे PHP एक्सटेंशन में बनाया है, तो मुझे लगता है कि आप अनिवार्य रूप से केवल एक छोटे, निजी उपयोगकर्ता आधार के लिए वितरण और संगतता रखरखाव के दुःस्वप्न का सामना करेंगे। क्या आपने इस सवाल को खोलने के बाद से कुछ भी कोशिश की है या खोज ली है? –