39 x 27 = 1053 (39 блоков по горизонтали, 27 по вертикали), Например: если в таблице t_grid найден блок, тогда выводиться ссылка и title баннера, если его нет в базе тогда ввыодится просто ссылка.
На данный момент функция выполняется за 5 секунд, я думаю она может выполняться в 100 раз быстрее. Проблема в том что получается 1053 запроса к базе данных.
function show_map()
{
echo "<img src='img/mapbg.png' usemap='#AdMap'>";
echo "<map name='AdMap'>";
$start=microtime(true);
$x1=0;
$y1=0;
$x2=0;
$y2=0;
for ($j = 1; $j <= 27; $j++) {
$y2=$y2+32;
$x1=0;$x2=0;
for ($i = 1; $i <= 39; $i++) {
$z++;
$x2=$x2+32;
$query = sprintf("SELECT * FROM t_grid WHERE i_position='%s' LIMIT 1",mysql_real_escape_string($z));
$result=mysql_query($query );
if (!$result) { echo("</br></br>Invalid query=".$query." - ".mysql_error()."<br>");exit;}
else if (mysql_num_rows($result)>0)
{
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
echo "<area shape='rect' coords='$x1,$y1,$x2,$y2' target='_blank' href='".SITE_URL."/go_url.php?block_url=".$row['id']."' title='".$row['s_title']."'>";
}
else echo "<area shape='rect' coords='$x1,$y1,$x2,$y2' target='_blank' href='".SITE_URL."/buy.php?block=$z' title='Купить баннер №$z'>";
$x1=$x1+32;
}
$y1=$y1+32;
}
$elapsed=microtime(true)-$start;
Echo "Время выполнения скрипта: $elapsed";
echo "</map>";
}