2012-10-09 16 views
6

PHP का उपयोग कैसे करें PHP अब स्पष्ट रूप से Thread कक्षा का समर्थन करता है। Mutex और Cond कक्षा भी है। इसे अच्छे विकल्पों के साथ संकलित करने के लिए एक आवश्यकता है और इसे रखने के लिए एक पीईसीएल एक्सटेंशन जोड़ें।PHP // थ्रेड // म्यूटेक्स // कंड

क्या कोई अच्छा ट्यूटोरियल शुरू करना है? ऐसा कुछ जो स्पष्ट रूप से प्रत्येक कक्षा/विधि का उचित उपयोग दिखाता है।

मुझे नहीं पता कि इन वर्गों से कैसे निपटें। मुझे बहुत सरल चीजों को करने के कुछ ठोस उदाहरणों की आवश्यकता होगी जो संभवतः कई विधियों को प्रदर्शित करते हैं।

धन्यवाद।

+0

इसे अभी तक जारी नहीं किया गया है। PHP डेवलपर्स शायद आपकी मदद कर सकते हैं। – Ryan

उत्तर

14

यह रूप में जारी की गई है PECL पर उपलब्ध है, GitHub पृष्ठों ... Git (स्रोत) यदि आप कर सकते हैं, और हाल ही में कोड पर खिड़कियों डाउनलोड ...

http://pthreads.org कुछ और जानकारी है, और उदाहरण चेकआउट भी फ़ोल्डर ...

आप आपको बस इतना करना मैं, एक सटीक जवाब दे सकता है मुझसे सीधे संपर्क करने में संकोच न की जरूरत है क्या में और अधिक विशिष्ट कर रहे हैं ...

दस्तावेज की कमी के बारे में क्षमा करें, मैं कर रहा हूँ मेरे काम के आसपास के समय में आक्रामक रूप से विकासशील पर्थ्रेड - यह काम से छुट्टियों पर था और यह लिखा गया था अब मैं काम पर वापस आ गया हूं - जितनी जल्दी हो सके दस्तावेज जितना संभव हो सके अपडेट किया जाएगा।

थ्रेडिंग आमतौर पर एक जटिल चीज है, लेकिन इसकी आवश्यकता नहीं है ... कभी भी एक थ्रेड पूल देखा जो 100 से कम लाइनों से है ?? https://github.com/krakjoe/pthreads/blob/master/examples/Pooling.php ... एक है !!

आप शर्तों या म्युटेक्स PHP में धागे संचालित करने के लिए के बारे में पता करने की जरूरत नहीं, pthreads, आसान peasy सब कुछ ... बोर्ड पर

कूद, बिना सवाल भी शामिल है मैं होगा यह सही ...

+0

यह वही था जो मैंने देखा था, धन्यवाद। जैसे ही मुझे आवश्यकता है, मैं आपसे संपर्क करने में संकोच नहीं करूंगा। – dader

+1

क्या पाथ्रेड अपाचे के भीतर काम करता है? यदि हां, तो क्या मुझे एमपीएम-प्रीफर्क, या एमपीएम-वर्कर लेना चाहिए? – dader

+0

यह प्रत्येक एसएपीआई पर्यावरण में काम करता है, अपना चयन करें। –

1

किसी भी भाषा में थ्रेडिंग आसान नहीं है। यह विचार की एक अलग ट्रेन (गैर रेखीय) लेता है। चूंकि आपने जो भी उल्लेख किया है वह किसी भी जारी किए गए PHP संस्करण में उपलब्ध नहीं है, इसलिए मैं pctnl और shmop कार्यक्षमता के साथ खेलने की अनुशंसा करता हूं। विशेष रूप से pcntl_fork। दोनों थोड़ी देर के आसपास रहे हैं और समर्थित हैं। यह बहु-प्रसंस्करण है और थ्रेडिंग नहीं है, लेकिन जो भी आप खोज रहे हैं उसे पूरा कर सकते हैं। लेकिन थ्रेडिंग अधिक कुशल है।

आमतौर पर आप काम के लिए माता-पिता की प्रक्रिया की जांच करने के लिए फोर्किंग का उपयोग करेंगे, इसे एक फोर्क प्रक्रिया में प्रतिनिधि करेंगे, और फिर बच्चे की प्रक्रिया के दौरान अधिक काम की जांच करें। मूल प्रक्रिया बाल प्रक्रियाओं की स्थिति की जांच कर सकती है। उदाहरण के लिए, आप यह सुनिश्चित कर सकते हैं कि आप केवल कुछ निश्चित प्रक्रियाओं को फेंक दें और दूसरे को फटने से पहले पूरा करने की प्रतीक्षा करें।

मैंने 500 प्रक्रियाओं को फोर्क किया है जिस पर सीपीयू लोड उच्च हो गया था। पैर की प्रक्रिया सिस्टम लोड की जांच करेगी और अगर लोड बहुत अधिक था तो फोर्क नहीं होगा।

यदि आपको वास्तव में आवश्यकता है, तो आप थ्रेडिंग के साथ प्राप्त होने वाली अधिक कार्यक्षमता प्राप्त करने के लिए साझा मेमोरी (shmop फ़ंक्शंस) का उपयोग कर सकते हैं।

+1

आपके उत्तर के लिए धन्यवाद। मैंने पहले से ही pcntl_fork के साथ खेला है, और यह कुछ काम करता है, लेकिन मुझे लगता है कि थ्रेडिंग मुझे इंटर प्रोसेस संचार के ऊपरी हिस्से को बचाएगी (मान लीजिए कि थ्रेडिंग विभिन्न धागे के बीच साझा करने वाले चर के बारे में महान सुविधाएं प्रदान करता है, क्या मैं गलत हूं ?)।विशेष रूप से, मुझे लगता है, अपरिवर्तनीय वस्तुओं का उपयोग करते समय (फिर, क्या मैं गलत हूँ?)। – dader

+0

आप सही हैं, धागे आपको ऊपर की ओर बचाते हैं। आप थ्रेडिंग के बिना साझा मेमोरी फ़ंक्शंस के साथ "वेरिएबल शेयरिंग" कर सकते हैं। ईमानदारी से, यदि आप प्रक्रियाओं के ऊपरी हिस्से के बारे में थ्रेडिंग और चिंतित हैं, तो आपको शायद PHP के अलावा एक भाषा को देखना चाहिए। –

+0

मैं पूरी तरह से आपसे सहमत हूं, PHP इस कार्य के लिए एक विकल्प होने से बहुत दूर है। – dader

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