2010-03-13 7 views
11

कई बार get_file_contents बहुत समय लगता है और कहा कि पूरी स्क्रिप्ट लटका हुआ है। एक समय, get_file_contents पर सीमा बाहर स्थापित स्क्रिप्ट की अधिकतम निष्पादन समय को संशोधित किए बिना की कोई तरीका है?मैं PHP में get_file_contents पर समय सीमा कैसे निर्धारित कर सकते हैं?

संपादित करें:

यह लंबे समय से ले रहा है क्योंकि फ़ाइल मौजूद नहीं है। मुझे "स्ट्रीम खोलने में असफल रहा है: HTTP अनुरोध विफल!" त्रुटि। लेकिन यह हमेशा के लिए लेता है।

उत्तर

35

timeout option के साथ एक संदर्भ बनाकर पीएचपी> 5.2.1 में संभव हो सकता है लगता है।

थोड़ा मैनुअल पृष्ठ से उदाहरण संशोधन:

<?php 

$opts = array('http' => 
    array(
     'method' => 'GET', 
     'timeout' => 120 
    ) 
); 

$context = stream_context_create($opts); 

$result = file_get_contents('http://example.com/get.php', false, $context); 

?> 
+1

+1: मुझे यह पसंद है जब लोग धाराओं का उपयोग करने का सुझाव देते हैं * (जो PHP की महान चीजों में से एक है जो लगभग किसी के बारे में नहीं जानता है ;-() * –

+0

धन्यवाद ... एक आकर्षण की तरह काम करना :-) – Jagira

+0

अगर निर्दिष्ट समय सीमा फ़ंक्शन तक पहुंच जाएगी, 'FALSE' वापस आ जाएगी? तो मैं अन्य सभी से त्रुटि को अलग करने में सक्षम नहीं होगा? –

1

आप उपयोग ini_set गिनती और file_get_contents का उपयोग कर और फिर इसे बाद वर्ष मूल्य को बहाल करने से पहले "default_socket_timeout" सेट - अगर आपकी कोड के कुछ अन्य भागों को प्रभावित करती है ...

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