次のコードでは、次のような 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);
?>