Ankündigung

Einklappen
Keine Ankündigung bisher.

Thread Support in PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Thread Support in PHP

    Hallo,

    gibt es eine Möglichkeit in PHP Threads zu nutzen? Möchte gerne ein Objekt mit Methoden parallel laufen lassen, weiß aber nicht ob das überhaupt geht.

    Jemand einen Rat? Danke für die hilfe


  • #2
    Nein
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Das gibt es noch nicht, derzeit gibt es nur die Prozessnebenläufigkeit. Das Thema ist allerdings sehr komplex da die Kommunikation zwischen den Prozessen selbst aufgebaut und gehandhabt werden muss
      DevBlog|3D Online-Shopping|Xatrium

      Kommentar


      • #4
        Wofür brauchst du das? Was möchtest du machen? Vlt. gibt es einen anderen Weg.

        Kommentar


        • #5
          Ich möchte gerne mittels Zend Framework unterstützung Ips auf Funktionalität prüfen.
          Zurzeit stehen die Ips in einem Array, werden dann mittels ForEach durchlaufen.
          Möchte gerne mehrere Ips "gleichzeitig" testen, um die Wartezeit herunter zu schrauben.
          Zwar könnte ich 2tes Zend http objekt anlegen, wäre aber sehr performance intensiv.

          PHP-Code:
          foreach($proxys[0] as $test => $ip)
          {
              
          if(!empty(
          $ip)) {
              
          $ipexplode(":",$ip);



          $fehler $this->testeProxy($ip[0],$ip[1]);
              
          }    


          public function 
          testeProxy($ip,$port) {
              
          $this->config = array(
              
          'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
              
          'proxy_host' => $ip,
              
          'proxy_port' => $port,
              
          'timeout' => '10',
              );    
              

          /**
           * Es wird geprüft, ob Google aufgerufen werden kann. 
           */    
              
          $url ='http://www.google.de/search?hl=de&q=allintitle:seo';    

          try {

          $this->getContent($url);
          if(
          $this->fehlerStatus==TRUE)
          {

              
          $this->config=NULL;
              unset(
          $this->config);
              return 
          FALSE;
          }

          $test $this->getDom($url,null,'p#resultStats b[3]','innerText');

          //Hier werden Umleitungen von Proxys abgefangen.
          //Es wird ein Code 400 zurück geliefert, welcher kein Fehler ist.
          if($test==null) {
          $this->config=NULL;
          unset(
          $this->config);
          return 
          FALSE;
              
          }
          $this->config=NULL;
          unset(
          $this->config);
          return 
          TRUE;

          }catch(
          Exception $e){
              
          $this->config=NULL;
              unset(
          $this->config);
              return 
          FALSE;
          }
          }

          Kommentar


          • #6
            PHP-Code:
                public function getContent($url$parsedSite='') {
                    
            $this->exception=FALSE;
                    
            $this->fehlerStatus=FALSE;    
                    try{

                        
            $client = new Zend_Http_Client($url$this->config);
                                
            $client->setConfig(array(
                              
            'useragent' => $this->userAgent,
                            
            'keepalive'      => TRUE    
                        
            ));
                 
            $client->setHeaders('Accept-Language''de-DE,de;q=0.8,de-de;q=0.6,en-us;q=0.4,en;q=0.2');            
                        

                        
            //Request wird abgesetzt.
                        
            $client->request();

                        
            //Zend Response Objekt wird initialisiert
                        
            $this->responde Zend_Http_Response::fromString($client->getLastResponse());

                        
            //Wenn Responde fehlerhaft.
                        

                        
            if ($this->responde->isError() || $this->responde->getStatus() == 999) {


                            
            //Wenn Fehlercode 503 und Proxy nicht aktiv ist.
                            
                        
            if(($this->responde->isError() || $this->responde->getStatus() == 503 || $this->responde->getStatus() == 999) && ($parsedSite=='Yahoo'||$parsedSite=='Google')){

                        
            $this->fehlerStatus=TRUE;


                    if((
            $this->googleIndex== -|| $this->yahooIndex== -1) && $this->proxyAktiv==FALSE) {            
                                
            $dbObjekt = new db();
                                
                                
            $select = ("SELECT IP,Port    
                                FROM proxys
                                WHERE ID BETWEEN 
            $dbObjekt->startID AND $dbObjekt->EndID"
                                   
            );
                                   
                                                          
                                
            $this->ips $dbObjekt->dbSelect($select);
                                
            $this->proxyAktiv=TRUE;

                                
            $proxyCheck = new proxy();
                                
                                foreach(
            $this->ips as $i => $ips) {
                                    
                                
                                    
            $test $proxyCheck->testeProxy($ips['IP'],$ips['Port']);
                                    if(
            $test == TRUE){
                                    
            $funzt[] = $ips;
                                    }
                            
                                    if(
            $test == FALSE){
                                    
            $funztNet[] = $ips;
                                    }

                                
                                }
                                
                                
            $dbObjekt->dbDel($funztNet);
                                
                                echo 
            "Es sind nun ".count($funzt)." IPs im Array";                        
                                
            $this->ipAnzahl count($funzt) ;
                                                
                                
            $this->googleIps $funzt;
                                
            $this->yahooIps $funzt;    
                                
                                
            $this->ips null;
                                unset(
            $this->ips);
                                
                                }

                    
                    if(
            $this->proxyAktiv==TRUE) {
                        
                
                        if (
            $parsedSite=='Google') {
                            
                            
            $this->googleIndex $this->googleIndex  1;  
                            
                                if(
            $this->yahooIndex == $this->ipAnzahl) {
                                
                            echo 
            "<h2>KEINE PROXYS MEHR IM ARRAY</h2>";
                            exit;
                            }                
                            
                        }elseif(
            $parsedSite=='Yahoo'){
                            
            $this->yahooIndex $this->yahooIndex  1;  

                        if(
            $this->yahooIndex == $this->ipAnzahl) {
                                
                            echo 
            "<h2>KEINE PROXYS MEHR IM ARRAY</h2>";
                            exit;
                            }        
                        
                        }
                        
                        if (
            $parsedSite=='Google') {
                            
                                    
            $this->config = array(
                                    
            'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
                                    
            'proxy_host' => $this->googleIps[$this->googleIndex][IP],
                                    
            'proxy_port' =>$this->googleIps[$this->googleIndex][Port],
                                    
            'timeout' => '10',
                                    
            'proxyBeNam' => '',
                                    
            'proxyPw' => ''
                                    
                                
            );
                                
                                
                                
                                
            //echo 'Nutze nun IP Nummer: '.$this->googleIps[$this->googleIndex][IP].":".$this->googleIps[$this->googleIndex][Port];                
                                
                        
            }elseif($parsedSite=='Yahoo'){
                            
                                    
            $this->config = array(
                                    
            'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
                                    
            'proxy_host' => $this->yahooIps[$this->yahooIndex][IP],
                                    
            'proxy_port' =>$this->yahooIps[$this->yahooIndex][Port],
                                    
            'timeout' => '10',
                                    
            'proxyBeNam' => '',
                                    
            'proxyPw' => ''
                                    
                                
            );
                        }
                        
                        
                            };

                        }
                        }
                    if(!(
            $this->responde->isError()) && !($this->responde->getStatus() == 999)) {
                        
            $this->fehlerStatus=FALSE;
                            
            $content $client->getLastResponse()->getBody();
                            return 
            $content;
                        }
                        
                    
                    }catch(
            Exception $e){
                        
            $this->fehlerStatus=TRUE;
                        
                        
            $this->exception=TRUE;

                    
            //Wenn Google Sorry Seite anzeigt wird ein einzeiliges Cookie gesetzt und ist deshalb ein String.
                    //Es muss also überprüft werden, ob getHeader kein Array ist.
                

                    
            if(($this->googleIndex== -|| $this->yahooIndex== -1) && $this->proxyAktiv==FALSE && ($parsedSite=='Yahoo'||$parsedSite=='Google') && $this->exception==TRUE) {            
                                
            $dbObjekt = new db();
                                
                                
            $select = ("SELECT IP,Port    
                                FROM proxys
                                WHERE ID BETWEEN 
            $dbObjekt->startID AND $dbObjekt->EndID"
                                   
            );
                                   
                                                          
                                
            $this->ips $dbObjekt->dbSelect($select);
                                
            $this->proxyAktiv=TRUE;

                                
            $proxyCheck = new proxy();
                                
                                foreach(
            $this->ips as $i => $ips) {
                                    
                                
                                    
            $test $proxyCheck->testeProxy($ips['IP'],$ips['Port']);
                                    if(
            $test == TRUE){
                                    
            $funzt[] = $ips;
                                    }
                            
                                    if(
            $test == FALSE){
                                    
            $funztNet[] = $ips;
                                    }

                                
                                }
                                
                                
            $dbObjekt->dbDel($funztNet);
                                
                                
                        echo 
            "Es sind nun ".count($funzt)." IPs im Array";                        
                                
            $this->ipAnzahl count($funzt) ;
                        
                                
            $this->googleIps $funzt;
                                
            $this->yahooIps $funzt;    
                                
                                
            $this->ips null;
                                unset(
            $this->ips);
                    

                                }

                    
                    if(
            $this->proxyAktiv==TRUE && ($parsedSite=='Yahoo'||$parsedSite=='Google') && $this->exception==TRUE) {
                        if (
            $parsedSite=='Google') {
                            
                            
            $this->googleIndex $this->googleIndex  1;  
                            
                            if(
            $this->googleIndex == $this->ipAnzahl) {
                                
                            echo 
            "<h2>KEINE PROXYS MEHR IM ARRAY</h2>";
                            exit;        
                            }        
                            
                            
                        }elseif(
            $parsedSite=='Yahoo'){
                            
            $this->yahooIndex $this->yahooIndex  1;  
                            
                            if(
            $this->yahooIndex == $this->ipAnzahl) {
                                
                            echo 
            "<h2>KEINE PROXYS MEHR IM ARRAY</h2>";
                            exit;
                            }    
                        }
                        
                        if (
            $parsedSite=='Google') {
                            
                                    
            $this->config = array(
                                    
            'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
                                    
            'proxy_host' => $this->googleIps[$this->googleIndex][IP],
                                    
            'proxy_port' =>$this->googleIps[$this->googleIndex][Port],
                                    
            'timeout' => '10',
                                    
            'proxyBeNam' => '',
                                    
            'proxyPw' => ''
                                    
                                
            );
                                
                                
                                
            //echo 'Nutze nun IP Nummer: '.$this->googleIps[$this->googleIndex][IP].":".$this->googleIps[$this->googleIndex][Port];                
                                
                                
                            
                        
            }elseif($parsedSite=='Yahoo'){
                            
                                    
            $this->config = array(
                                    
            'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
                                    
            'proxy_host' => $this->yahooIps[$this->yahooIndex][IP],
                                    
            'proxy_port' =>$this->yahooIps[$this->yahooIndex][Port],
                                    
            'timeout' => '10',
                                    
            'proxyBeNam' => '',
                                    
            'proxyPw' => ''
                                    
                                
            );
                        }
                        
                            };

                        
            //print 'In Klasse '.$e->getFile().' in Zeile '.$e->getLine().' '.$e->getMessage();
                    
            }
                } 

            Kommentar


            • #7
              Und nu?
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Dafür ist PHP auch nicht wirklich geeignet. Wenn du Zeitaufwendige Anwendungen schreiben willst solltest du lieber auf eine andere Sprache ausweichen die das gut erledigen kann. PHP ist da nicht geeignet. Ich würd jetzt auf Java setzen, aber das bleibt dir überlegen.

                Kommentar

                Lädt...
                X