diff --git a/app/MetaGer.php b/app/MetaGer.php
index 5206bd9ca6787ce862b1d1a24c467869fc789231..163987a7376dd06d034250c22023b3567228a825 100644
--- a/app/MetaGer.php
+++ b/app/MetaGer.php
@@ -218,7 +218,6 @@ class MetaGer
 
         #die(SocketRocket::get("tls", "dominik-pfennig.de", "", 443));
 
-
 		# Überprüfe, welche Sumas eingeschaltet sind
         $xml = simplexml_load_file($this->sumaFile);
         $enabledSearchengines = [];
@@ -239,12 +238,12 @@ class MetaGer
             foreach($sumas as $suma)
             {
                 if($request->has($suma["service"]) 
-                	|| ( $this->fokus !== "bilder" 
-                		&& ($suma["name"]->__toString() === "qualigo" 
-                			|| $suma["name"]->__toString() === "similar_product_ads" 
-                			|| ( !$overtureEnabled && $suma["name"]->__toString() === "overtureAds" )
-                			)
-                		)
+                	#|| ( $this->fokus !== "bilder" 
+                	#	&& ($suma["name"]->__toString() === "qualigo" 
+                	#		|| $suma["name"]->__toString() === "similar_product_ads" 
+                	#		|| ( !$overtureEnabled && $suma["name"]->__toString() === "overtureAds" )
+                	#		)
+                	#	)
                     #|| 1 === 1  #Todo: entfernen
                 	){
 
@@ -286,7 +285,7 @@ class MetaGer
             }
         }
 
-        if( ( $this->fokus !== "bilder" && $countSumas <= 0 ) || ( $this->fokus === "bilder" && sizeof($enabledSearchengines) === 0) )
+        if( $countSumas <= 0 )
         {
             $this->errors[] = "Achtung: Sie haben in ihren Einstellungen keine Suchmaschine ausgewählt.";
         }
@@ -316,19 +315,48 @@ class MetaGer
                 $this->sockets[$tmp->name] = $tmp->fp;
             }
 		}
-
         # Nun passiert ein elementarer Schritt.
         # Wir warten auf die Antwort der Suchmaschinen, da wir vorher nicht weiter machen können.
         # aber natürlich nicht ewig.
         # Die Verbindung steht zu diesem Zeitpunkt und auch unsere Request wurde schon gesendet.
         # Wir geben der Suchmaschine nun bis zu 500ms Zeit zu antworten.
-        usleep(500000);
+
         # Jetzt lesen wir alles aus, was da ist und verwerfen den Rest:
-        foreach($engines as $engine)
+        $enginesToLoad = count($engines);
+        $loadedEngines = 0;
+        $time = 0;
+        while( true )
         {
-            $engine->retrieveResults();
+            # Abbruchbedingung
+            if($time < 500)
+            {
+                if($loadedEngines >= $enginesToLoad)
+                    break;
+            }elseif( $time >= 500 && $time < $this->time)
+            {
+                if( ($loadedEngines / ($enginesToLoad * 1.0)) >= 0.8 )
+                    break;
+            }else
+            {
+                break;
+            }
+            foreach($engines as $engine)
+            {
+                if(!$engine->loaded)
+                {
+                    $success = $engine->retrieveResults();
+                    if($engine->loaded)
+                        $loadedEngines += 1;
+                }
+            }
+            usleep(50000);
+            $time += 50;
+        }
+        foreach( $engines as $engine )
+        {
+            if( !$engine->loaded )
+                $engine->shutdown();
         }
-
 
         $this->engines = $engines;
 	}
@@ -393,7 +421,8 @@ class MetaGer
         # Category
         $this->category = $request->input('category', '');
         # Request Times:
-        $this->time = $request->input('time', 1);
+        $this->time = $request->input('time', 1000);
+       
         # Page
         $this->page = $request->input('page', 1);
         # Lang
@@ -416,12 +445,12 @@ class MetaGer
         # Manchmal müssen wir Parameter anpassen um den Sucheinstellungen gerecht zu werden:
         if( $request->has('dart') )
         {
-        	$this->time = 10;
+        	$this->time = 10000;
         	$this->warnings[] = "Hinweis: Sie haben Dart-Europe aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 10 Sekunden hochgesetzt.";
         }
-        if( $this->time < 0 || $this->time > 20 )
+        if( $this->time <= 500 || $this->time > 20000 )
         {
-        	$this->time = 1;
+        	$this->time = 1000;
         }
         if( $request->has('minism') && ( $request->has('fportal') || $request->has('harvest') ) )
         {
@@ -438,7 +467,7 @@ class MetaGer
         }
         if( $request->has('ebay') )
         {
-        	$this->time = 2;
+        	$this->time = 2000;
         	$this->warnings[] = "Hinweis: Sie haben Ebay aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 2 Sekunden hochgesetzt.";
         }
         if( App::isLocale("en") )
diff --git a/app/Models/Searchengine.php b/app/Models/Searchengine.php
index 7763487e267c2ee9d4e76608a986457296fa3351..3feafc2223a1b2c5bd92e17c43514ede00d9cb37 100644
--- a/app/Models/Searchengine.php
+++ b/app/Models/Searchengine.php
@@ -19,6 +19,7 @@ abstract class Searchengine
 	public $ads = [];
 	public $write_time = 0;
 	public $connection_time = 0;
+	public $loaded = false;
 
 	function __construct(\SimpleXMLElement $engine, MetaGer $metager)
 	{
@@ -231,6 +232,7 @@ abstract class Searchengine
 		// end of headers
 		if(sizeof($headers) > 1){
 			$bodySize = 0;
+			stream_set_blocking($this->fp, 1);
 			if( isset($headers["Transfer-Encoding"]) && $headers["Transfer-Encoding"] === "chunked" )
 			{
 				$body = $this->readChunked();
@@ -245,9 +247,10 @@ abstract class Searchengine
 			{
 				die("Konnte nicht herausfinden, wie ich die Serverantwort von: " . $this->name . " auslesen soll. Header war: " . print_r($headers));
 			}
+			$this->loaded = true;
 		}else
 		{
-			fclose($this->fp);
+			return;
 		}
 
 		Redis::del($this->host . "." . $this->socketNumber);
@@ -256,7 +259,6 @@ abstract class Searchengine
 		{
 			$body = $this->gunzip($body);
 		}
-
 		#print_r($headers);
 		#print($body);
 		#print("\r\n". $bodySize);
@@ -268,6 +270,12 @@ abstract class Searchengine
 		#exit;
 	}
 
+	public function shutdown()
+	{
+		fclose($this->fp);
+		Redis::del($this->host . "." . $this->socketNumber);
+	}
+
 	private function readBody($length)
 	{
 		$theData = '';