2012-12-29 11 views
5

में Pthreads PHP एक्सटेंशन का उपयोग कैसे करें मुझे Pthreads PHP extension के साथ समस्याएं हैं। मैंने जेडटीएस सक्षम (--enable-maintainer-zts) के साथ PHP संकलित किया है और पीईसीएल के माध्यम से pthreads स्थापित किया है और विस्तार को मैन्युअल रूप से संकलित करने का भी प्रयास किया है।उबंटू

ऐसा लगता है कि मुझे वास्तव में इसका उपयोग नहीं करना है। मुझे लगता है कि मैं किसी अन्य अंतर्निर्मित कक्षा की तरह PHP में थ्रेड क्लास का उपयोग करने में सक्षम हूं, लेकिन कोई भाग्य नहीं है क्योंकि PHP इसे पहचान नहीं पाता है। POSIX फ़ंक्शन काम करने लगते हैं।

मैं mod_php 5.4.6 के साथ उबंटू 12.10 सर्वर 64-बिट का उपयोग कर रहा हूं।

+0

मैंने अपाचे त्रुटि लॉग का अध्ययन किया और ऐसा लगता है कि pthreads.so लोड नहीं किया जा सकता क्योंकि एक अज्ञात प्रतीक है: sapi_globals_id ... मैंने phpps को स्थिर विस्तार के रूप में php संकलित करने का भी प्रयास किया और इससे कोई फर्क नहीं पड़ता। –

+0

प्रलेखन स्पष्ट रूप से 5.3 के लिए बताता है। क्या हम मान सकते हैं कि "5.6.4" से आपका मतलब "5.4.6" था? यदि ऐसा है, तो 5.4 से 5.3 तक नीचे जाने का प्रयास करें और देखें कि यह तब काम करता है या नहीं। यदि ऐसा होता है, तो आप रखरखाव के साथ 5.4 समर्थन के बारे में कोई समस्या दर्ज करना चाहेंगे। – Charles

+0

हाँ, वह एक टाइपो था, मैं PHP 5.4.6 चला रहा हूं। फिलहाल pthreads ऊपर और चल रहा है। –

उत्तर

3

यदि आप एक्सटेंशन कक्षाओं तक नहीं पहुंच पा रहे हैं तो यह लोड नहीं होता है।

मुझे लगता है कि आपने एक बग रिपोर्ट खोली है, जिस पर मैंने जवाब दिया कि आपकी कॉन्फ़िगरेशन लाइन विकृत है।

कॉन्फ़िगर लाइन का उपयोग करना चाहते है:

./configure --enable-pthreads --enable-maintainer-zts 

उपरोक्त आदेश एक DSO के रूप में pthreads का निर्माण होगा।

./configure --enable-pthreads=static --enable-maintainer-zts 

उपरोक्त आदेश PHP में स्थिर रूप से pthreads का निर्माण करेगा।

दोनों समान रूप से 5.3, 5.4 और 5.5 तक समर्थित हैं।

इसके अतिरिक्त, आप अपने सिस्टम स्थापना अधिलेखित कर रहे हैं तो आप उदाहरण के लिए एक विशिष्ट --prefix का उपयोग करना चाहिए,, यदि आप php निष्पादन /usr/bin पर है (जो आप के साथ पता लगाने कर सकते हैं "जो php"), तो --prefix=/usr अपने प्रणाली की स्थापना के ऊपर लिख देगा ।

अपने पुराने इंस्टॉलेशन को साफ़ करें (स्रोत अभी भी उपलब्ध होने पर अनइंस्टॉल करें)। फिर से शुरू करें, सुनिश्चित करें कि आप या तो सिस्टम स्थापना को ओवरराइट कर रहे हैं या इसे पूरी तरह से अलग कर रहे हैं।

जब आपने इसे काम किया है तो कृपया बग रिपोर्ट अपडेट करें।

+0

ठीक है, मैंने पूरे उबंटू को पुनर्स्थापित किया है और मैंने आपके द्वारा सुझाए गए आदेश (--enable-pthreads = static) के साथ स्थिर रूप से php का निर्माण किया है। इस समय कोई समस्या नहीं है, इसलिए ऐसा लगता है कि PHP कॉन्फ़िगरेशन में दुर्घटनाएं हुईं। मेरी मदद करने के लिए धन्यवाद। –

+0

क्या जेडटीएस को PHP के सभी स्थापित संस्करणों (यानी सीजीआई, सीएलआई, और एसएपीआई/अपाचे) के लिए सक्षम होना चाहिए? या अगर मैं केवल सीएलआई के लिए pthreads का उपयोग करने की योजना बना रहा हूं, तो क्या मैं अन्य लोगों के लिए जेडटीएस अक्षम कर सकता हूं? – robguinness

+0

कहीं भी pthreads लोड होने के लिए जेडटीएस की आवश्यकता होती है, यदि आप चाहें तो pthreads के लिए समर्थन के साथ PHP का एक पृथक उदाहरण बना सकते हैं ... –