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
  #16 (permalink)  
Alt 28-06-2010, 02:13
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

Das ist nicht dein realer Code!
Mit Zitat antworten
  #17 (permalink)  
Alt 29-06-2010, 13:48
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

wieso ist das nicht mein realer code?
Mit Zitat antworten
  #18 (permalink)  
Alt 29-06-2010, 14:08
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

Weil du dich in einem Objektkontext befindest (das sagt mir $this->sleep) und deswegen die Funktion verarbeiten() nicht an das CURL-Ergebnis kommt. Das liegt nämlich in einer lokalen Variable $string in der Methode, wo der CURL-Aufruf stattfindet. Wenn das wirklich eins zu eins dein Code ist, dann erkläre mal bitte, was verarbeiten() macht!
Mit Zitat antworten
  #19 (permalink)  
Alt 29-06-2010, 19:38
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

du hast vollkommen recht.
das ganze ist aus einer klasse

das ganze ist ein ausschnitt einer funktion.
verarbeiten war pseudocode, stimmt. da das, was mit dme string gemacht ist, viel zu viel code hier wäre. das ganze wird gefiltert, bisschen verändert und dann per insert into in ne db geschrieben.

das remission dekrementiert den counter und setzt einige andere variablen, sodass innerhalb der schleife der request wiederholt wird

entschuldigt!
Mit Zitat antworten
  #20 (permalink)  
Alt 30-06-2010, 05:06
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

Leider kann man dir nicht helfen, weil du Informationen zurück hältst. Dein Code besteht im Wesentlichen aus
PHP-Code:
$string curl_exec(...);
if (
$string === FALSE) {
    
remission();
} else {
    
verarbeiten();

und deine einzige Aussage dazu ist "leider verschwinden manche requests".

Unter "Request" verstehst du offenbar die Ausführung von curl_exec(). Aber was heißt "verschwinden"? Gibt es eine Differenz zwischen der Anzahl der Ausführungen von curl_exec() und der Summe der Ausführungen von remission() und verarbeiten()? Anders ausgedrückt: Willst du behaupten, dass nach curl_exec() manchmal weder if noch else ausgeführt wird?!?
Mit Zitat antworten
  #21 (permalink)  
Alt 30-06-2010, 08:05
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

du weißt selbst, dass das eigentlich nicht sein kann .. deine Abfrage mit
Code:
if ($string === FALSE) {


ist absolut eindeutig .... es kann natürlich sein, dass dass einige deiner Anfragen IMMER im remission - Zweig landen. Dort wird die Schleifenvariablein incrementiert - und irgendwann wird dann die Schleife abgebrochen, ohne dass die betreffenden Hosts jemals antworten - Das wird wohl passieren, in unserm tollen Internet .. einzelne Rechner sind immer mal wieder nicht erreichbar
__________________

Wer LESEN kann, ist klar im Vorteil!

Geändert von eagle275 (30-06-2010 um 08:28 Uhr)
Mit Zitat antworten
  #22 (permalink)  
Alt 30-06-2010, 13:39
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

hallo,
okay, jetzt werde ich es ganz genau machen. mein problem ist, dass die verarbeitung von $string so umfangreich ist. deshalb habe viel gekürzt, weshalb es wohl umstaendlich wird.

also, jetzt ganz genau:
es handelt sich um die klasse abc. im konstruktor wird dann jeweils alles festgelegt, was die objektfunktionen brauchen ($this->..)

der ausschnitt des codes ist aus der "main" funktion. diese wird nach dem erzeugen des objekts gerufen. dabei wird die schleife ($num) über $argv gesteuert. (kommandozeile)

jetzt wird genau das ausgefuehrt:

PHP-Code:

while($num<$this->num){ //durchlauflaenge wird definiert $num->argv
            
         
$cur_u getURL(); //diese funktion liefert die url, die besucht wird
   // ist auch etwas umfangreicher, zum verstaendnis reicht es aber wohl  so
        
            
$ch curl_init();  //hier werden die cURL "executed"
            
curl_setopt($chCURLOPT_URL$cur_u); 
            
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);
            
curl_setopt($chCURLOPT_NOPROGRESS0);
            
curl_setopt($chCURLOPT_BUFFERSIZE9000);
            
$string curl_exec($ch);

            if(
$string === FALSE){ //wird auf fehler ueberprueft
                
print "error"
                
remission(); setzt den url "maker" um eins zuruecksodass neu gerufen wird
            
}
            else{
                
verarbeiten($string); hier wird der string dann weiterverarbeitet
                
print "fertig und ok";
                
                    
$num++; //schleife
                
}
                print 
"sent request to ".$num;
                
curl_close($ch);
                
usleep($this->sleep); 
            } 
so, das ist es. die ausgabe sieht nun so aus (wir gehen von 10 requests aus)
fertig und ok sent request to....
fertig und ok sent request to....
error sent request to...
fertig und ok sent request to....
sent request to....

...
und genau das vorletze ist das problem: hier wird zwar gesagt, dass der request gesendet wurde, allerdings habe ich keine indikator was nun damit passiert ist. obwohl doch eine der beiden moeglichkeiten (verarbeiten oder remission) zutreffen MUSS.

ich hoffe nun ist es klar

danke!

Geändert von svr (30-06-2010 um 13:41 Uhr)
Mit Zitat antworten
  #23 (permalink)  
Alt 30-06-2010, 14:10
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

Wenn deine Schleife nicht mehr wiederholt wird (letzter Durchlauf), kann danach ja nichts mehr kommen. Sinnvoller wäre es, diese Ausgabe vor dem aktuellen Request zu tätigen und nicht danach für den nächsten, weil ja eben nicht unbedingt noch einer kommen muss. Error by Design.

Edit: vergiss das Geschriebene, ich merk gerade, dass ich da was verdreht hab.
__________________
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!

Geändert von AmicaNoctis (30-06-2010 um 15:08 Uhr)
Mit Zitat antworten
  #24 (permalink)  
Alt 30-06-2010, 15:03
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

Deine Art den Code für uns zu vereinfachen macht es leider nur komplizierter.

Dein Problem: Du erhältst u.a. die Ausgabe "sent request to …" ohne dass zuvor "error" oder "ok" ausgegeben wurde.

Dein Code entspricht diesem Pseudocode:
PHP-Code:
while ($num $this->num) {
    if (
rand(0,1)) {
        print 
"error";
    }
    else {
        print 
"ok";
        
$num++;
    }
    print 
"sent request to ".$num;

Jetzt siehst du selbst, dass dieser Code dein Problem überhaupt nicht verursachen kann. Da ich deine Ausgabe nicht anzweifle, muss es also an deinen "Vereinfachungen" liegen.

Häng doch einfach mal das ganze Script als Attachment an deinen nächsten Beitrag. Sonst kommen wir hier nicht zu Potte.
Mit Zitat antworten
  #25 (permalink)  
Alt 30-06-2010, 18:19
svr
 Registrierter Benutzer
Links : Onlinestatus : svr ist offline
Registriert seit: Mar 2010
Beiträge: 60
svr befindet sich auf einem aufstrebenden Ast
Standard

hallo,
ah, jetzt habe ich es herausgefunden: tatsächlich lag es nicht an cURL, es lag an einer regular expression, der ein U Modifier fehlte.
ich habe bewusst nicht den ganzen code gepostet, da es über 1700 zeilen sind.


vielen dank für eure hilfe!
Mit Zitat antworten
  #26 (permalink)  
Alt 30-06-2010, 18:37
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

Zitat:
Zitat von svr Beitrag anzeigen
da es über 1700 zeilen sind.
Aua, wie will man das denn noch debuggen? Mal ein paar Such-Stichworte als Anregungen für die Verbesserung deines Programmierstils, um sowas beim nächsten Mal zu vermeiden: OOP, Code Re-use, Unit Tests, Behavior-driven Development, Design Patterns, Inversion of Control.
__________________
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
  #27 (permalink)  
Alt 01-07-2010, 13:23
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 AmicaNoctis Beitrag anzeigen
Aua, wie will man das denn noch debuggen? Mal ein paar Such-Stichworte als Anregungen für die Verbesserung deines Programmierstils, um sowas beim nächsten Mal zu vermeiden: OOP, Code Re-use, Unit Tests, Behavior-driven Development, Design Patterns, Inversion of Control.
klar, bin mir bewusst.

vielen dank!
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 20:55 Uhr.