php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 24-06-2010, 18:50
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard PHP cURL timeout?!

hallo liebe gemeinde
ich habe ein kleines problem, wofür mir irgendwie die lösung nicht einleuchten mag.
und zwar:
ich setze jeweils in einer schleife so um die 100 http requests ab, der request übergibt den returned transfer an eine variable, die einigen zeichen entfernt und anschliessend mittels sql in eine datenbank geschrieben wird.

es geht dabei darum, ein system zu entwickeln, womit ich lokal von meinem remote server einige daten auslesen kann und sozusagen ein "backup" wichtiger daten zu erhalten.
klar kann man es anders lösen, darum geht es mir aber nicht.

das problem ist nur, dass irgendwie manche requests einfach so untergehen. falls bei einem request was falsch laeuft sollte ja false zurückgegeben werden, wird aber nicht, das ganze geht einfach unter.
habe je eine ausgabe if(request true) print "request nummer x erfolgreich"

sieht dann meisten so aus: erfolgreich-> 1,2,3,4 plötzlich 8, 9,10,11,12,15

ich denke ihr wisst was gemeint ist
ich habe die manual mal gelesen, allerdings habe ich keine schlüssige antwort.
ich habe als "lösungsversuch" mal probiert, einen sleep einzubauen. nach jedem request wird jetzt 2 sekunden geschlafen.

danke für jede hilfe
Mit Zitat antworten
  #2 (permalink)  
Alt 24-06-2010, 18:58
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von svr Beitrag anzeigen
habe je eine ausgabe if(request true) print "request nummer x erfolgreich"

sieht dann meisten so aus: erfolgreich-> 1,2,3,4 plötzlich 8, 9,10,11,12,15
Wie auch immer diese eher obskure Abfrage in der Realität aussehen mag - wenn du nur den positiv-Fall behandelst und den Fehlerfall nicht, dann brauchst du dich auch nicht wundern, wenn fehlerhaft verlaufene Requests „einfach so untergehen“.

Wie sieht denn deine Fehlerbehandlung aus, was fragst du ab und wie behandelst du es?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 24-06-2010, 20:05
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

ich geben voll und ganz zu, dass ich den eintrag hier haette schoener gestalten koennen

das ganze sieht natürlich so aus:

if(curl_request) print "erfolgreich";
if(!curl_request) print "nicht erfogreich"; // php-manual: curl gibt im fehlerfall false zurück

trotzdem wird eben nicht dieses "nicht erfolgreich" ausgegeben, niemals.
Mit Zitat antworten
  #4 (permalink)  
Alt 24-06-2010, 20:10
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von svr Beitrag anzeigen
trotzdem wird eben nicht dieses "nicht erfolgreich" ausgegeben, niemals.
Vielleicht waren alle Requests „erfolgreich“ (im Sinne von HTTP) - aber die Gegenstelle hat nicht das geliefert, was du erwartet hast. Hast du das überprüft ...?


Du wirst schon mehr Infos - brauchbare Infos - liefern müssen, wenn du Hilfe bei deinem Problem bekommen willst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 24-06-2010, 20:26
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

hallo,
also als erstes werde ich mal die curls posten
sieht so aus

PHP-Code:
            $ch curl_init(); 
            
curl_setopt($chCURLOPT_URL$urlcurrent); 
            
curl_setopt($chCURLOPT_HEADER1);
            
curl_setopt($chCURLOPT_USERAGENT$this->user_agent); 
            
curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
curl_setopt($chCURLOPT_TIMEOUT$this->timeout);
            
curl_setopt($chCURLOPT_COOKIEJAR,'c.txt');
            
curl_setopt($chCURLOPT_COOKIEFILE,'c.txt');
            
curl_setopt($chCURLOPT_FRESH_CONNECT1); 
            
curl_setopt($chCURLOPT_FORBID_REUSE1); 
            
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
             
            
$string curl_exec($ch);

            if(!
$string){
                print 
"false";
                
remission();
            } 
als erstes fuehre ich in der schleife jeweils die requests aus, speichere das ganze in $string. danach wird uberprüft, was string zurückgibt, bei false sollte die funktion remission, die das ganze mit derselben url wiederholt, gerufen werden.

im positiven fall wird der string weiterverarbeitet

wie meinst du das mit "im sinne von http"
wenn ein fehler auftritt sollte false zurückgegeben werden, falls alles glatt geht sollt mein stirng daten enthalten, wenigstens irgendwas
ode rnicht?

danke!

Geändert von svr (24-06-2010 um 20:29 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 24-06-2010, 20:45
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von svr Beitrag anzeigen
wenn ein fehler auftritt sollte false zurückgegeben werden,
Prüfst du auf false? Nein.

Zitat:
falls alles glatt geht sollt mein stirng daten enthalten, wenigstens irgendwas ode rnicht?
Genau das herauszufinden, riet ich dir bereits.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 24-06-2010, 21:02
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Prüfst du auf false? Nein.
..!$string...
prüft das etwa nicht?

Zitat:
Zitat von wahsaga Beitrag anzeigen
Genau das herauszufinden, riet ich dir bereits.
falls ein string daten enthält sehe ich es, dnen ich geben curl infos uber datengroesse transferzeit etc aus, plus substring.

auf der kommandozeile natürlich. dann muesste ich doch wenigstens sehen, ob die entsprechende nummer leer ist.
es kommt aber gar kein output!
substring plus das andere zeug habe ich ja nicht zum spass gemacht, es ist also nicht so, dass ich es nicht versucht hätte.
Mit Zitat antworten
  #8 (permalink)  
Alt 24-06-2010, 22:33
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

öhm .-. auch wenn das Amica und die annern hier vielleicht schöner erklären

if (!$String) prüft nicht auf FALSE - , es prüft ob die Variable überhaupt existiert - die funktion antwortet jedoch bei Verbindungsfehler mit FALSE . das dann in der Variablen drinsteht ... sie existiert also

correctamente sollte das wohl eher
Code:
if ($String === FALSE ) {
   echo "mecker HTTP-request keine Antwort <br>";
}
else {
....
tu halt was du machen wolltest, wenn die Anfrage erfolgreich war 
}

Geändert von eagle275 (24-06-2010 um 22:36 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 24-06-2010, 23:45
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

!$var ergibt immer dann true, wenn für $var eine der folgenden Bedingungen zutrifft:
  • $var ist undefiniert (vorher kommt eine Notice)
  • $var ist null
  • $var ist false
  • $var ist 0
  • $var ist ein leerer String
  • $var ist ein String der nur die Ziffer 0 enthält, z. B. '0' oder "0"
  • $var ist ein leeres Array

Im Grunde genommen wird der Wert erst zu int und danach zu bool gecastet. Das Ergebnis wird schließlich negiert (vgl. empty()).
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #10 (permalink)  
Alt 25-06-2010, 11:44
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

super erklärung, danke
mache mich ans werk und schaue ob alles klar geht
Mit Zitat antworten
  #11 (permalink)  
Alt 25-06-2010, 22:25
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

hi,
muss noch einmal fragen

habe jetzt das ganze so gelöst if($string === FALSE){remission();}else{save();}

das funktioniert schon ganz gut, nur leider verschwinden manche requests immernoch.
habe eine statistik gemacht, so in etwa 5-10% sind einfach weg.

hat jemand einen rat?
danke
Mit Zitat antworten
  #12 (permalink)  
Alt 25-06-2010, 23:02
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wie sieht dein aktueller Code aus?
Mit Zitat antworten
  #13 (permalink)  
Alt 26-06-2010, 12:32
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
while($int<$absoluteAnzahl){
            
$int++;
            
// hier wird die url generiert ->$u_curl
        
            
$ch curl_init(); 
            
curl_setopt($chCURLOPT_URL$u_cur); 
            
curl_setopt($chCURLOPT_HEADER1);
            
curl_setopt($chCURLOPT_USERAGENT$this->user_agent); 
            
curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
curl_setopt($chCURLOPT_TIMEOUT$this->timeout);
            
curl_setopt($chCURLOPT_COOKIEJAR,$this->cookie_file);
            
curl_setopt($chCURLOPT_COOKIEFILE,$this->cookie_file);
            
curl_setopt($chCURLOPT_FRESH_CONNECT1); 
            
curl_setopt($chCURLOPT_FORBID_REUSE1); 
            
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
            
$string curl_exec($ch);

            if(
$string === FALSE){
print 
"error";
             
remission(); //die funktion ruft das ganze nochmal auf
            
}
            else{
verarbeiten(); // hier wird weiter verarbeitet
                  
}
                
               
                
usleep($this->sleep);
                
                
curl_close($ch); 
            } 
sorry für die schlechte formatierung
Mit Zitat antworten
  #14 (permalink)  
Alt 27-06-2010, 15:11
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

keiner mehr??
Mit Zitat antworten
  #15 (permalink)  
Alt 27-06-2010, 15:47
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von svr Beitrag anzeigen
keiner mehr??
OffTopic:
Du weißt, was um 16 Uhr passiert? Schau mal in deine Fehrnsehzeitung.


Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Online Timeout NetzSchleicher PHP Developer Forum 6 05-01-2007 14:29
timeout soerenschulz SQL / Datenbanken 9 04-01-2007 20:39
fehlermeldung bei timeout undine PHP Developer Forum 3 10-10-2005 09:56
timeout definieren? mrhappiness BRAINSTORMING PHP/SQL/HTML/JS/CSS 4 04-12-2003 16:20
CGI Timeout lemmy SQL / Datenbanken 4 24-10-2002 13:53

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:22 Uhr.