kostenloser Webspace werbefrei: lima-city


Foreach Schleife wird nicht komplett ausgeführt

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Hallo zusammen,

    ich habe ein PHP Code welcher zuerst 100 IDs aus einer Datenbank ausliest und in ein Array speichert. Das habe ich so gemacht:

    $ids = array();
    $durchlauf = 0;
    $page = $mysqli->query("SELECT * FROM identities WHERE aktiviert='0' ORDER BY id LIMIT $durchlauf,100;");
    while ($zeile = $page->fetch_array()) {
    	$ids[] = $zeile['id'];
    }


    Da in der Datenbank zur Zeit 70 IDs drin sind, für die aktiviert = 0 gilt, werden 70 IDs in das Array gespeichert. Das habe ich mit var_dump getestet, also das funktioniert.

    Jetzt möchte ich für jede ID ein weiteren Code ausführen, der unter anderem einen API Aufruf durchführt. Das mache ich mit foreach:

    foreach($ids as $key => $id){
     echo $id."<br>"; // Zum testen
     ...
     ...
    }


    Um zu testen wie oft foreach durchlaufen wird, gebe ich am Anfang von jedem Durchlauf die ID aus. Es werden jetzt nur die ersten 4 IDs ausgegeben. Die foreach Schleife scheint also abgebrochen zu werden. Aber ich bekomme keine Fehlermeldung.

    Ich möchte jetzt ungerne den ganzen Code aus der foreach Schleife hier posten, da er ziemlich lang ist. Auf jeden Fall gibts wie gesagt in der Schleife für jede ID einen API Aufruf und am Ende noch einen Eintrag in eine Datenbank. Ich glaub nicht, dass die Bearbeitung des Codes zu lange dauert, um 70 mal die Schleife zu durchlaufen, da die Seite nicht länger als 5 Sekunden lädt und da auch keine Fehlermeldung kommt.

    Also kann mir irgendwer sagen woran das liegen könnte, dass die Schleife nicht komplett durchlaufen wird, ohne den ganzen Code zu sehen?

    Ich hoffe mir kann jemand helfen.
    Viele Grüße
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Wenn du nicht weißt wo deine Schleife abbricht, dann könntest du ja alle paar Zeilen im PHP-Code eine echo-Anweisung platzieren. So findest du schnell heraus bei welchem Kommando abgebrochen wird und eventuell kannst du uns ja dann sagen, was genau dort los ist. Ohne Code wird es für uns jedenfalls eher schwer eine Lösung zu suchen / finden.

    Nur zur Sicherheit: hast du die Ausgabe von Fehlermeldungen in PHP aktiviert?
  4. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Genau so habe ich es gemacht und die Schleife bricht beim vierten Durchlauf zwischen zwei normalen If Anweisungen ab. Siehe hier:

    if(isset($teams[0]->bans)){
    	echo "+<br>"; // Wird angezeigt
    	$team1_bans = $teams[0]->bans;
    	$team1_ban1 = $teams[0]->$team1_bans[0]->championId;
    	$team1_ban2 = $teams[0]->$team1_bans[1]->championId;
    	$team1_ban3 = $teams[0]->$team1_bans[2]->championId;
    }
    else{
    	echo "+<br>"; // Wird angezeigt
    	$team1_ban1 = "";
    	$team1_ban2 = "";
    	$team1_ban3 = "";
    }
    echo "+<br>"; // Wird nicht mehr angezeigt !! -----------------------------
    if($teams[0]->winner == true){
    	$sieger = $team1_id;	
    }


    Also bewusst habe ich die PHP Fehlermeldungen auf jeden Fall nicht ausgestellt. Wie kann man denn nachgucken ob sie an bzw aus sind?

    EDIT:

    Also in der phhp.ini stehen folgende Zeilen:

    error_reporting = E_ALL
    display_errors = On

    Also müsste es doch an sein oder?

    Beitrag zuletzt geändert: 21.8.2014 18:02:28 von ultimate-bravery
  5. Hallo!
    ultimate-bravery schrieb:
    Also bewusst habe ich die PHP Fehlermeldungen auf jeden Fall nicht ausgestellt. Wie kann man denn nachgucken ob sie an bzw aus sind?

    EDIT:

    Also in der phhp.ini stehen folgende Zeilen:

    error_reporting = E_ALL
    display_errors = On

    Also müsste es doch an sein oder?

    Stell einfach an den Anfang des Scripts folgendes um sicher zu gehen:
    error_reporting(-1);

    MfG. Simon D.
  6. Nun, ohne kompletten Code in dem Rumpd ist es für uns schwer nachvollziehbar, was du da fabriziert hast.

    Möglich wären allerhand andere Dinge:

    funktionsaufrufe, in denen die komplette ausführung des Scriptes beendet wird wie mit die() exit etc...
    endlose Rekursionen, die zu keinem Ziel führen(ok, da das SCript nach 5 sekunden fertig ist, unwahrscheinlich

    du löscht die $ids-Variable oder deren inhalt während der Schleifenausführung oder überschreibst diese...

    und noch viele andere, an die man einfach so spontan nciht denken kann... kompletter Code macht sinn, wenn das hier keine Schnitzeljagd á la Hangman werden soll... und wenn du den Code nciht veröffentlichen kannst/willst, such die jemanden deines vertrauens hier raus und poste ihm das per PN und derjenige bearbeitet das...
  7. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Hat sich erledigt, ich konnte den Fehler beheben. Hab die Seite als Cronjob laufen lassen und dann wurde mir die Fehlermeldung per E-Mail geschickt^^ Es war folgende:

    PHP Catchable fatal error: Object of class stdClass could not be converted to string in ... on line 104


    War also etwas falsch beim API Request.

    Warum mir die Fehlermeldung aber nicht direkt auf der Seite angezeigt wurde bleibt mit ein Rätsel.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!