FireDemon
Новичок
Подскажите как оптимизировать скрипт.
Есть таблица в которой ~6000 записей в формате MySQL.
Вот исходник
Выполнение этого скрипта 2 минуты, как можно его оптимизировать?
CREATE TABLE `user_additional_params` (
`id` int(11) NOT NULL auto_increment,
`paramid` int(11) default NULL,
`userid` int(11) default NULL,
`value` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Это структура таблицы.
3 SQL запроса, т.к. из таблицы user_additional_params надо брать 3 строки в которых paramid=1,2 и 3
Что посоветуеете сделать?
Есть таблица в которой ~6000 записей в формате MySQL.
Вот исходник
PHP:
<?
mysql_connect('localhost','root');
mysql_select_db('UTM5');
$sql='SELECT id FROM `users` WHERE is_deleted=0 AND id>99';
$result=mysql_query($sql);
$filename='/usr/local/etc/arp.dat';
$darp=date('d-m-Y.H-i-s');
exec('/usr/local/bin/sudo /bin/mv /usr/local/etc/arp.dat /home/billing/backup/arp/arp.olg.'.$darp);
if ($handle = fopen($filename, 'a')) {
fwrite($handle,'192.168.128.3 00:80:48:25:FA:19 pub'.chr(10));
# запись служебных IP, MAC ~ 20 строк
while($row=mysql_fetch_row($result))
{
$sqlnd='SELECT value FROM `user_additional_params` WHERE userid='.$row[0].' AND paramid=1 LIMIT 1';
$resultnd=mysql_query($sqlnd);
if(mysql_num_rows($resultnd)>0)
{
$nd=mysql_result($resultnd,0,'value');
$sqlip='SELECT value FROM `user_additional_params` WHERE userid='.$row[0].' AND paramid=2 LIMIT 1';
$resultip=mysql_query($sqlip);
$ip=mysql_result($resultip,0,'value');
if(eregi('192.168.129',$ip)||eregi('192.168.130',$ip)||eregi('192.168.131',$ip)||eregi('192.168.132',$ip))
{
$sqlmac='SELECT value FROM `user_additional_params` WHERE userid='.$row[0].' AND paramid=3 LIMIT 1';
$resultmac=mysql_query($sqlmac) or die(mysql_error());
$mac=mysql_result($resultmac,0,'value');
if((!eregi(' ',$mac)||($mac<>''))&&(eregi(':',$mac)))
{
if(eregi(';',$ip))
{
$ipe=explode(';',$ip);
$mace=explode(';',$mac);
$s=count($ipe);
for($i=0;$i<$s;$i++)
{
$pc=$i+1;
fwrite($handle,trim($ipe[$i]).' '.trim($mace[$i]).' pub'.chr(10));
} // End of for($i=0;$i<$s;$++)
} else { // Else of if(eregi(';',$ip))
fwrite($handle,trim($ip).' '.trim($mac).' pub'.chr(10));
} // End of if(eregi(';',$ip))
} // End of if((!eregi(' ',$mac)||($mac<>''))&&(eregi(';',$mac)))
} // End of if(!eregi(' ',$ip)||($ip<>''))
} // End of if(mysql_num_rows($result>0))
} // End of while($row=mysql_fetch_row($result))
} else {
echo 'Open Error';
}
system('arp -f '.$filename);
?>
CREATE TABLE `user_additional_params` (
`id` int(11) NOT NULL auto_increment,
`paramid` int(11) default NULL,
`userid` int(11) default NULL,
`value` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Это структура таблицы.
3 SQL запроса, т.к. из таблицы user_additional_params надо брать 3 строки в которых paramid=1,2 и 3
Что посоветуеете сделать?