有時,get_file_contents花費的時間太長,會掛起整個腳本。有什麼方法可以在get_file_contents上設置超時限制,而不需要修改腳本的最大執行時間?如何在PHP中設置get_file_contents的時間限制?
編輯:
由於該文件不存在,因此花費很長時間。我收到「無法打開流:HTTP請求失敗!」錯誤。但它需要永遠。
有時,get_file_contents花費的時間太長,會掛起整個腳本。有什麼方法可以在get_file_contents上設置超時限制,而不需要修改腳本的最大執行時間?如何在PHP中設置get_file_contents的時間限制?
由於該文件不存在,因此花費很長時間。我收到「無法打開流:HTTP請求失敗!」錯誤。但它需要永遠。
似乎可以在PHP> 5.2.1中通過創建與timeout option的上下文。
稍作修改例如從手冊頁:
<?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);
?>
你算使用ini_set
和使用file_get_contents
,然後後恢復的舊值之前設置"default_socket_timeout"
- 如果會影響到您的代碼的其他一些地方...
+1:我喜歡它當人們建議使用流*(這是幾乎沒有人知道的PHP的偉大的事情之一;-()* – 2010-03-13 16:42:59
謝謝...像一個魅力工作:-) – Jagira 2010-03-13 16:45:48
如果指定的時間限制將會到達,函數將返回'FALSE'?所以我無法區分超時錯誤和其他所有錯誤? – 2014-12-11 09:36:48