0

次のコードでは、次のような mysqli-table dsp を参照します。

id,url,image(blob)

目標は、画像 (ブロブ) を含まないすべてのエントリを見つけ、url (画像の URL) をブロブに変換し、エントリを画像内のブロブで更新することです (ここでは省略、//結果なしで実行)。別のエントリに同じ URL が既にある場合は、そこから画像 (ブロブ) をコピーするだけです。次のコードはまさにこれを行いますが、約 1 分後にプロセスは 500 エラーで中止されます。

このエラーはどこから発生し、タスクを実行するためのより迅速で効率的な方法はありますか (処理能力の 65% を消費します)。

<?
  $sql = "SELECT url,id
  FROM `dsp` 
  WHERE `image` IS NULL 
  ORDER BY `dsp`.`id` ASC";

  if ($result = mysqli_query($link, $sql))   //$link is a mysqli object
  {
    while ($row = mysqli_fetch_row($result)) 
    {
        $sqli = "SELECT `image`,`image_type`
        FROM `dsp` 
        WHERE `image` IS NOT NULL 
        AND `url` = '".$row[0]."'
        ORDER BY `dsp`.`image` DESC";
      $result2 = $link->query($sqli);
        if ($result2->num_rows > 0 )
        {   
            $row2 = $result2->fetch_row();
            $image = mysql_escape_string($row2[0]);
            $image_typ = $row2[1];
            $sqli = "UPDATE `dsp` SET `image` = '".$image."', `image_type` = '".$image_typ."' WHERE `dsp`.`id` =".$row[1].";";
            $link->query($sqli); 
        //echo $sqli;
            if ($link->error != '')
            {
                die($link->error);
            }    
        }
        else
        {
            //no result
        }
    }
  } 

  mysqli_close($link);     
?>
4

0 に答える 0