मैं विंडोज 7 - 64 बिट चला रहा हूं, जिसमें नवीनतम एक्सएएमपीपी संस्करण है जिसमें 32-बिट PHP संस्करण है।क्या PHP चुपचाप लगातार fseek-command को एक fseek कमांड में अनुकूलित करता है?
एक बहुत बड़ी फ़ाइल के लिए परीक्षण http://php.net/manual/en/function.fseek.php#112647 (PHP_MAX_INT 2147483647 से भी बड़ा) पर मैं अब यकीन है कि, कि लगातार निम्नलिखित fseeks filepointer पर निष्पादित किया जा रहा से पहले अभिव्यक्त किया जाता है।
मैं दो प्रश्न हैं:
मैं तोड़ सकता है यह उचित साधनों के साथ संक्षेप (या केवल वैकल्पिक हल ऊपर के लिंक में वर्णित के साथ)?
क्या यह समेकन PHP में हो रहा है (जैसा कि मुझे लगता है, हालांकि मुझे नहीं पता कि PHP में कहां है) या विंडोज 7 में?
अपने आप का जवाब: कई के साथ दो तरीके दिए कोशिश कर रहा का प्रयास अपने सिस्टम पर काम नहीं किया। इसके बजाय उन्होंने फ़ाइल पॉइंटर को PHP_MAX_INT के तहत पर अलग-अलग स्थितियों में रखा। (32-बिट पीएचपी केवल वहाँ पर अभी भी संभव है से PHP_MAX_INT करने के लिए + 8192. पढ़ना अप प्राप्त कर सकते हैं, लेकिन मैं कितनी दूर पता नहीं है।)
इसलिए सवाल मेरी विशेष मामले के लिए अप्रचलित है, 32 के रूप में -बीबी PHP केवल PHP_MAX_INT + 8192 तक की तलाश कर सकता है, जो कुछ भी आप करते हैं। I प्रश्न छोड़ दो, क्योंकि दो लोगों ने इसे वोट दिया, और हो सकता है जो सामान्य उत्तर में रूचि रखता है।
मैं यहाँ एक बग रिपोर्ट दायर:
https://bugs.php.net/bug.php?id=69213
परिणाम: एक 64-बिट PHP बिल्ड यह काम हो सकता है के साथ, लेकिन मैं यह कोशिश नहीं की।
नोट: मैंने स्प्लिफाइल ऑब्जेक्ट को किसी और द्वारा सुझाए गए अनुसार नहीं किया है, क्योंकि मुझे php-manual पर भरोसा है कि SplFileObject केवल सामान्य खोज, आदि आदेशों से ऊपर एक परत होना चाहिए। और मैं इस विशिष्ट कार्य के लिए पहले से ही perl में स्थानांतरित हो चुका हूं। (जो भी php बग पक्ष पर लड़का समझ गया।) जब तक यह मुख्यधारा नहीं है तब तक मैं 64 बिट PHP निर्माण नहीं करूँगा। और मैं कुछ बहुत बड़ी फ़ाइलों को पढ़ने और लिखने के लिए पूरी तरह से पर्ल पर माइग्रेट नहीं कर रहा हूं। (और मेरे लिए SplFileObject में किसी भी वैचारिक लाभ को देखना बहुत मुश्किल है। हालांकि रखरखावकर्ता इसके बारे में "उत्साही" कहा जाता है।) – John