2016-11-22 6 views
0

Ich entwickle einen Parser, in dem jedes Mal der Parser ein Bild von URL zu remote Server kopiert, und speichern Sie die Details in MySql-Datenbank. Was ich tue, ist wie folgt:Schleife läuft genau 20 mal, aber MySql Datenbank fügt die Daten nur 16 mal

function scrap_photo($frompage, $permalink, $url, $message, $createdtime, $type, $imgid) { 
    global $last_cron_timestamp; 
    global $cxn; 

    if ($createdtime > $last_cron_timestamp && $type == "photo") { 


      $current_time_stamp = round(microtime(true) * 1000); 
      $imgpath = "photo/".$current_time_stamp.".jpg"; 
      echo $imgpath; 
      $fp = fopen($imgpath, "w"); 

      $handle = curl_init(); 
      curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5'); 
      curl_setopt($handle, CURLOPT_URL, $url); 
      curl_setopt($handle, CURLOPT_FOLLOWLOCATION, TRUE); 
      curl_setopt($handle, CURLOPT_FAILONERROR, true); 
      curl_setopt($handle, CURLOPT_TIMEOUT, 300); 
      curl_setopt($handle, CURLOPT_FILE, $fp); 
      curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, FALSE); 

      curl_exec($handle); 
      curl_close($handle); 
      fclose($fp); 


      $query = "INSERT INTO images (permalink, url, message, createdtime, imgid, frompage, type, photo_name, photo_path) VALUES ('$permalink', '$url', '$message', '$createdtime', '$imgid', '$frompage', '$type', '$current_time_stamp', '$imgpath')"; 

      mysqli_query($cxn, $query); 
    } 
} 

diese Funktion ‚Schrott Foto‘ verwendet wird, um das Bild in dem Verzeichnis zu speichern und die Details in DB zu schreiben.

Das Problem, das ich gegenüberstelle, ist, die Schleife läuft 20 Mal, diese Funktion wird 20 Mal aufgerufen, und sogar die Anzahl der Bilder im Ordner ist 20, aber in MySql-Datenbank wird nur 16 Abfrage eingefügt.

Ich kann nicht herausfinden, wie oder warum, Hilfe!

+0

Ich sehe hier keine Schleife. –

+0

Haben Sie einzigartige Schlüssel in Betracht gezogen? – barudo

+0

Ja, Schleife ist da, die diese Funktion jedes Mal aufruft. –

Antwort

0
  • Machen Sie Ihre Bedingung if ($createdtime > $last_cron_timestamp && $type == "photo") { Pässe für die 20 Fotos sicher,
  • Verwendung mysqli_error zu überprüfen, ob Datenbankfehler, wie zum Beispiel Ihre Werte zurückgibt null sein könnte, während Datenbank sie null werden nicht gestattet.
Verwandte Themen