From: Frank Karlitschek Date: Mon, 8 Oct 2012 10:00:29 +0000 (+0200) Subject: add a sane socket timeout so that the interface stays responsive with a slow or not... X-Git-Tag: v4.5.0RC3~16 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e9f04bedd4d57ffd47d9b6e25041da191aaac1e7;p=nextcloud-server.git add a sane socket timeout so that the interface stays responsive with a slow or not working internet connection --- diff --git a/lib/ocsclient.php b/lib/ocsclient.php index 6428a883679..fc2095f5c15 100644 --- a/lib/ocsclient.php +++ b/lib/ocsclient.php @@ -62,7 +62,15 @@ class OC_OCSClient{ } $url=OC_OCSClient::getAppStoreURL().'/content/categories'; - $xml=@file_get_contents($url); + // set a sensible timeout of 10 sec to stay responsive even if the server is down. + $ctx = stream_context_create( + array( + 'http' => array( + 'timeout' => 10 + ) + ) + ); + $xml=@file_get_contents($url, 0, $ctx); if($xml==FALSE) { return NULL; } @@ -103,7 +111,17 @@ class OC_OCSClient{ $filterurl='&filter='.urlencode($filter); $url=OC_OCSClient::getAppStoreURL().'/content/data?categories='.urlencode($categoriesstring).'&sortmode=new&page='.urlencode($page).'&pagesize=100'.$filterurl.$version; $apps=array(); - $xml=@file_get_contents($url); + + // set a sensible timeout of 10 sec to stay responsive even if the server is down. + $ctx = stream_context_create( + array( + 'http' => array( + 'timeout' => 10 + ) + ) + ); + $xml=@file_get_contents($url, 0, $ctx); + if($xml==FALSE) { return NULL; } @@ -141,7 +159,15 @@ class OC_OCSClient{ } $url=OC_OCSClient::getAppStoreURL().'/content/data/'.urlencode($id); - $xml=@file_get_contents($url); + // set a sensible timeout of 10 sec to stay responsive even if the server is down. + $ctx = stream_context_create( + array( + 'http' => array( + 'timeout' => 10 + ) + ) + ); + $xml=@file_get_contents($url, 0, $ctx); if($xml==FALSE) { OC_Log::write('core','Unable to parse OCS content',OC_Log::FATAL); return NULL; @@ -178,7 +204,16 @@ class OC_OCSClient{ } $url=OC_OCSClient::getAppStoreURL().'/content/download/'.urlencode($id).'/'.urlencode($item); - $xml=@file_get_contents($url); + // set a sensible timeout of 10 sec to stay responsive even if the server is down. + $ctx = stream_context_create( + array( + 'http' => array( + 'timeout' => 10 + ) + ) + ); + $xml=@file_get_contents($url, 0, $ctx); + if($xml==FALSE) { OC_Log::write('core','Unable to parse OCS content',OC_Log::FATAL); return NULL; @@ -215,7 +250,17 @@ class OC_OCSClient{ $url=OC_OCSClient::getKBURL().'/knowledgebase/data?type=150&page='.$p.'&pagesize='.$s.$searchcmd; $kbe=array(); - $xml=@file_get_contents($url); + + // set a sensible timeout of 10 sec to stay responsive even if the server is down. + $ctx = stream_context_create( + array( + 'http' => array( + 'timeout' => 10 + ) + ) + ); + $xml=@file_get_contents($url, 0, $ctx); + if($xml==FALSE) { OC_Log::write('core','Unable to parse knowledgebase content',OC_Log::FATAL); return NULL;