2010-05-18 6 views
7

मैं गतिशील वेब पृष्ठों के लिए PHP से शुरू कर रहा हूं। मेरे पास पैरामीटर और अन्य मालिकाना सामान प्राप्त करने/सेट करने के लिए एएनएसआई सी में लिखी कुछ पुस्तकालय हैं। मुझे आश्चर्य है, क्या इस कार्यों को कॉल करने के लिए PHP के अंदर एक रैपर का उपयोग करने का एक आसान समाधान है? क्या पहले से ही मौजूदा कक्षा/पुस्तकालय है? अपने आप को ऐसा करने का सबसे अच्छा अभ्यास क्या होगा? मैं नहीं चाहता कि बाहरी अनुप्रयोगों को कॉल करें और stdin/stdout का उपयोग करें!PHP: मानक लाइब्रेरी फ़ंक्शंस को कॉल करने के लिए कैसे करें

क्या कोई आसान उदाहरण उपलब्ध है? मैं अब ज़ेंड दस्तावेज के माध्यम से खोदना नहीं चाहता हूं, मुझे केवल जटिलता की भावना की आवश्यकता है।

+0

की संभावित डुप्लिकेट [कॉलिंग C/C++ PHP से पुस्तकालय समारोह] (http://stackoverflow.com/questions/2479402/calling-cc-library-function-from-php) –

उत्तर

6

क्या आप अपने पुस्तकालयों को डीएलएल में पैकेज कर सकते हैं? यदि ऐसा है, तो आप उन्हें PHP के COM api के माध्यम से कॉल कर सकते हैं।

पीएचपी कॉम डॉक्स: http://us3.php.net/manual/en/book.com.php

उदाहरण कोड:

<?php 
$com = new COM("DynamicWrapper"); 
$com->Register("KERNEL32", "Beep", "i=ll", "f=s", "r=l"); 
$com->Beep(800, 10); 

नहीं तो आप एक एक्सटेंशन कस्टम आवरण समारोह (यानी, execute_through_wrapper ('yourfunc')) शामिल हैं कि लिख सकते हैं। यहाँ सी में php कार्यों लिखने पर कोई दस्तावेज़ है

http://php.net/manual/en/internals2.funcs.php

संपादित करें:
http://abhinavsingh.com/blog/2008/12/php-extensions-how-and-why/

यहाँ एक्सटेंशन लिखने के संबंध एक त्वरित ट्यूटोरियल सी में यह करने के लिए भी मुश्किल नहीं होना चाहिए है एक रैपर समारोह लिखें। एक बार एक्सटेंशन बनाने के बाद, इसे dl() (बहुत खतरनाक और अवमूल्यित) के माध्यम से गतिशील रूप से लोड किया जा सकता है।

http://us2.php.net/manual/en/function.dl.php

उन अपने मामले में केवल विकल्प हैं। डीएल लोडर के लिनक्स समकक्ष (.so लोडर) नहीं है (यह एक Win32- संबंधित एपीआई कॉल) है।

+0

मैं उल्लेख करना भूल गया, हमारे परिचालन सिस्टम इस परियोजना के लिए लिनक्स है।लेकिन इस libs के लिए साझा पुस्तकालय बनाना संभव होना चाहिए। – Andi

+0

धन्यवाद जॉन, इस लेख को पढ़ने में कुछ समय लगा, और मुझे लगता है कि एक एक्सटेंशन लिखना बहुत जटिल नहीं है! – Andi

+0

@Andi एनपी :), शुभकामनाएं! –

2

आप gearman भी मध्यस्थ के रूप में कार्य कर सकते हैं।

Gearman अन्य मशीनों या प्रक्रियाओं है कि बेहतर काम करने के लिए अनुकूल हैं के लिए काम से बाहर खेती के लिए एक सामान्य आवेदन रूपरेखा प्रदान करता है। यह को समांतर में काम करने के लिए बैलेंस प्रोसेसिंग लोड करने और भाषाओं के बीच फ़ंक्शन कॉल करने की अनुमति देता है। यह विभिन्न अनुप्रयोगों में उपयोग किया जा सकता है, उच्च उपलब्धता वाली वेबसाइटों से डेटाबेस प्रतिकृति घटनाओं का परिवहन। दूसरे शब्दों में, तंत्रिका तंत्र प्रोसेसिंग संचारित करने के लिए यह तंत्रिका तंत्र है।

+0

वाह - यह बेहद नया है मुझे! यह एक हल्के आरपीसी क्लाइंट/सर्वर ढांचे की तरह दिखता है, है ना? शायद एक छोटे से आवेदन के लिए ओवरकिल का थोड़ा सा, लेकिन एक जटिल प्रणाली के लिए यह बहुत उपयोगी हो सकता है। मैं PHP, सी, सी ++, आदि में लिखी गई कई प्रक्रियाओं के बीच संचार के लिए इसका उपयोग कर सकता हूं? – Andi

0

http://pear.php.net/ मैं एक विस्तार "inline_c" नाम मिल गया। दुर्भाग्य से मुझे बनाए रखा नहीं है। लेकिन ऐसा लगता है कि यह सामान की तरह होगा जो मैं पसंद करूंगा।

संबंधित मुद्दे